Index: src/Parameters/unittests/ContinuousParameterTest.cpp
===================================================================
--- src/Parameters/unittests/ContinuousParameterTest.cpp	(revision 9b5eb03b7cad5e1f2494b404dc68e986b56b0718)
+++ src/Parameters/unittests/ContinuousParameterTest.cpp	(revision 0b84b9486df4dbb31f498b9239fc74baf9788d4b)
@@ -26,5 +26,5 @@
 #include "Parameters/Parameter.hpp"
 
-#include "../Range.hpp"
+#include "CodePatterns/Range.hpp"
 
 #ifdef HAVE_TESTRUNNER
Index: src/Parameters/unittests/ContinuousValueTest.cpp
===================================================================
--- src/Parameters/unittests/ContinuousValueTest.cpp	(revision 9b5eb03b7cad5e1f2494b404dc68e986b56b0718)
+++ src/Parameters/unittests/ContinuousValueTest.cpp	(revision 0b84b9486df4dbb31f498b9239fc74baf9788d4b)
@@ -24,5 +24,5 @@
 #include <cppunit/ui/text/TestRunner.h>
 
-#include "Parameters/ContinuousValue.hpp"
+#include "Parameters/Value.hpp"
 
 #ifdef HAVE_TESTRUNNER
@@ -57,5 +57,5 @@
 {
   // create instance
-  ContinuousValue<int> test(*ValidIntRange);
+  Value<int> test(*ValidIntRange);
 
   // checking valid values
@@ -76,5 +76,5 @@
 {
   // create instance
-  ContinuousValue<int> test(*ValidIntRange);
+  Value<int> test(*ValidIntRange);
 
   // checking valid values
@@ -96,5 +96,5 @@
   {
     // create instance
-    ContinuousValue<int> test(*ValidIntRange);
+    Value<int> test(*ValidIntRange);
 
     // extending range and checking
@@ -108,5 +108,5 @@
   {
     // create instance
-    ContinuousValue<int> test(*ValidIntRange);
+    Value<int> test(*ValidIntRange);
 
     // lowering range with set value
@@ -135,5 +135,5 @@
 {
   // create instance
-  ContinuousValue<int> test(*ValidIntRange);
+  Value<int> test(*ValidIntRange);
 
   // unset calling of get, throws
@@ -168,5 +168,5 @@
 {
   // create instance
-  ContinuousValue<int> test(*ValidIntRange);
+  Value<int> test(*ValidIntRange);
 
   // unset calling of get, throws
@@ -200,6 +200,6 @@
   {
     // create instance
-    ContinuousValue<int> test(*ValidIntRange);
-    ContinuousValue<int> instance(*ValidIntRange);
+    Value<int> test(*ValidIntRange);
+    Value<int> instance(*ValidIntRange);
     test.set(1);
     instance.set(1);
@@ -219,7 +219,7 @@
   }
   {
-    ContinuousValue<int> test(*ValidIntRange);
+    Value<int> test(*ValidIntRange);
     range<int> OtherValidIntRange(1,5);
-    ContinuousValue<int> instance(OtherValidIntRange);
+    Value<int> instance(OtherValidIntRange);
 
     test.set(1);
@@ -282,5 +282,5 @@
 {
   // create instance
-  ContinuousValue<Vector> test(*ValidVectorRange);
+  Value<Vector> test(*ValidVectorRange);
 
   // checking valid values
@@ -314,5 +314,5 @@
   {
     // create instance
-    ContinuousValue<Vector> test(*ValidVectorRange);
+    Value<Vector> test(*ValidVectorRange);
 
     // extending range and checking
@@ -326,5 +326,5 @@
   {
     // create instance
-    ContinuousValue<Vector> test(*ValidVectorRange);
+    Value<Vector> test(*ValidVectorRange);
 
     // lowering range with set value
@@ -353,5 +353,5 @@
 {
   // create instance
-  /*ContinuousValue<Vector> test(*ValidVectorRange);
+  /*Value<Vector> test(*ValidVectorRange);
 
   // unset calling of get, throws
@@ -387,5 +387,5 @@
 {
   // create instance
-  ContinuousValue<Vector> test(*ValidVectorRange);
+  Value<Vector> test(*ValidVectorRange);
 
   // unset calling of get, throws
@@ -422,6 +422,6 @@
   {
     // create instance
-    ContinuousValue<Vector> test(*ValidVectorRange);
-    ContinuousValue<Vector> instance(*ValidVectorRange);
+    Value<Vector> test(*ValidVectorRange);
+    Value<Vector> instance(*ValidVectorRange);
     test.set(Vector(5,6,7));
     instance.set(Vector(5,6,7));
@@ -441,7 +441,7 @@
   }
   {
-    ContinuousValue<Vector> test(*ValidVectorRange);
+    Value<Vector> test(*ValidVectorRange);
     range<Vector> OtherValidVectorRange(Vector(0,1,2), Vector(20,21,22));
-    ContinuousValue<Vector> instance(OtherValidVectorRange);
+    Value<Vector> instance(OtherValidVectorRange);
 
     test.set(Vector(1,2,3));
Index: src/Parameters/unittests/DiscreteValueTest.cpp
===================================================================
--- src/Parameters/unittests/DiscreteValueTest.cpp	(revision 9b5eb03b7cad5e1f2494b404dc68e986b56b0718)
+++ src/Parameters/unittests/DiscreteValueTest.cpp	(revision 0b84b9486df4dbb31f498b9239fc74baf9788d4b)
@@ -24,5 +24,5 @@
 #include <cppunit/ui/text/TestRunner.h>
 
-#include "Parameters/DiscreteValue.hpp"
+#include "Parameters/Value.hpp"
 
 #ifdef HAVE_TESTRUNNER
@@ -59,16 +59,16 @@
 {
   // create instance
-  DiscreteValue<int> test(ValidValues);
+  Value<int> test(ValidValues);
 
   // check valid values indices
-  CPPUNIT_ASSERT_EQUAL((size_t)0, test.findIndexOfValue(1));
-  CPPUNIT_ASSERT_EQUAL((size_t)1, test.findIndexOfValue(2));
-  CPPUNIT_ASSERT_EQUAL((size_t)2, test.findIndexOfValue(3));
+  CPPUNIT_ASSERT_EQUAL((size_t)0, dynamic_cast<DiscreteValidator<int> &>(test.getValidator()).findIndexOfValue(1));
+  CPPUNIT_ASSERT_EQUAL((size_t)1, dynamic_cast<DiscreteValidator<int> &>(test.getValidator()).findIndexOfValue(2));
+  CPPUNIT_ASSERT_EQUAL((size_t)2, dynamic_cast<DiscreteValidator<int> &>(test.getValidator()).findIndexOfValue(3));
 
   // check invalid ones
   for (int i=-10; i<=0;++i)
-    CPPUNIT_ASSERT_EQUAL((size_t)-1, test.findIndexOfValue(i));
+    CPPUNIT_ASSERT_EQUAL((size_t)-1, dynamic_cast<DiscreteValidator<int> &>(test.getValidator()).findIndexOfValue(i));
   for (int i=4; i<=0;++i)
-    CPPUNIT_ASSERT_EQUAL((size_t)-1, test.findIndexOfValue(i));
+    CPPUNIT_ASSERT_EQUAL((size_t)-1, dynamic_cast<DiscreteValidator<int> &>(test.getValidator()).findIndexOfValue(i));
 }
 
@@ -79,5 +79,5 @@
 {
   // create instance
-  DiscreteValue<int> test(ValidValues);
+  Value<int> test(ValidValues);
 
   // checking valid values
@@ -98,5 +98,5 @@
 {
   // create instance
-  DiscreteValue<int> test(ValidValues);
+  Value<int> test(ValidValues);
 
   // checking valid values
@@ -117,21 +117,21 @@
 {
   // create instance
-  DiscreteValue<int> test(ValidValues);
+  Value<int> test(ValidValues);
 
   // adding values 4,5,6
   for (int i=4; i<=6;++i) {
     CPPUNIT_ASSERT_EQUAL(false, test.isValid(i));
-    test.appendValidValue(i);
+    dynamic_cast<DiscreteValidator<int> &>(test.getValidator()).appendValidValue(i);
     CPPUNIT_ASSERT_EQUAL(true, test.isValid(i));
   }
 
   // adding same value, throws assertion
-  const size_t size_before = test.ValidValues.size();
+  const size_t size_before = dynamic_cast<DiscreteValidator<int> &>(test.getValidator()).getValidValues().size();
 #ifndef NDEBUG
   std::cout << "The following Assert failures are intended and do not indicate a failure of the test." << std::endl;
   for (int i=1; i<=6;++i)
-    CPPUNIT_ASSERT_THROW(test.appendValidValue(i), Assert::AssertionFailure);
-#endif
-  CPPUNIT_ASSERT_EQUAL( size_before, test.ValidValues.size() );
+    CPPUNIT_ASSERT_THROW(dynamic_cast<DiscreteValidator<int> &>(test.getValidator()).appendValidValue(i), Assert::AssertionFailure);
+#endif
+  CPPUNIT_ASSERT_EQUAL( size_before, dynamic_cast<DiscreteValidator<int> &>(test.getValidator()).getValidValues().size() );
 
   // checking valid values
@@ -154,5 +154,5 @@
 {
   // create instance
-  DiscreteValue<int> test(ValidValues);
+  Value<int> test(ValidValues);
 
   // unset calling of get, throws
@@ -186,5 +186,5 @@
 {
   // create instance
-  DiscreteValue<int> test(ValidValues);
+  Value<int> test(ValidValues);
 
   // unset calling of get, throws
@@ -218,6 +218,6 @@
   {
     // create instance
-    DiscreteValue<int> test(ValidValues);
-    DiscreteValue<int> instance(ValidValues);
+    Value<int> test(ValidValues);
+    Value<int> instance(ValidValues);
     test.set(1);
     instance.set(1);
@@ -237,7 +237,7 @@
   }
   {
-    DiscreteValue<int> test(ValidValues);
-    DiscreteValue<int> instance(ValidValues);
-    instance.appendValidValue(4);
+    Value<int> test(ValidValues);
+    Value<int> instance(ValidValues);
+    dynamic_cast<DiscreteValidator<int> &>(instance.getValidator()).appendValidValue(4);
 
     test.set(1);
Index: src/Parameters/unittests/Makefile.am
===================================================================
--- src/Parameters/unittests/Makefile.am	(revision 9b5eb03b7cad5e1f2494b404dc68e986b56b0718)
+++ src/Parameters/unittests/Makefile.am	(revision 0b84b9486df4dbb31f498b9239fc74baf9788d4b)
@@ -7,6 +7,5 @@
 	../Parameters/unittests/ContinuousParameterTest.cpp \
 	../Parameters/unittests/DiscreteValueTest.cpp \
-	../Parameters/unittests/DiscreteParameterTest.cpp \
-	../Parameters/unittests/ValueTest.cpp
+	../Parameters/unittests/DiscreteParameterTest.cpp
 
 PARAMETERSTESTSHEADERS = \
@@ -14,6 +13,5 @@
 	../Parameters/unittests/ContinuousParameterTest.hpp \
 	../Parameters/unittests/DiscreteValueTest.hpp \
-	../Parameters/unittests/DiscreteParameterTest.hpp \
-	../Parameters/unittests/ValueTest.hpp
+	../Parameters/unittests/DiscreteParameterTest.hpp
 
 PARAMETERSTESTS = \
@@ -21,6 +19,5 @@
 	ContinuousParameterTest \
 	DiscreteValueTest \
-	DiscreteParameterTest \
-	ValueTest
+	DiscreteParameterTest
 
 TESTS += $(PARAMETERSTESTS)
@@ -34,12 +31,14 @@
 	../Parameters/unittests/ContinuousValueTest.cpp \
 	../Parameters/unittests/ContinuousValueTest.hpp \
+	../Parameters/Validators/DiscreteValidator.hpp \
+	../Parameters/Validators/DiscreteValidator_impl.hpp \
 	../Parameters/Validators/DummyValidator.hpp \
 	../Parameters/Validators/RangeValidator.hpp \
+	../Parameters/Validators/RangeValidator_impl.hpp \
 	../Parameters/Validators/Validator.hpp \
-	../Parameters/Validators/VectorRangeValidator.hpp \
-	../Parameters/ContinuousValue.hpp \
-	../Parameters/ContinuousValue_impl.hpp \
-	../Parameters/Range.hpp \
-	../Parameters/ValueInterface.hpp
+	../Parameters/Value.hpp \
+	../Parameters/Value_impl.hpp \
+	../Parameters/ValueInterface.hpp \
+	../Parameters/VectorFromString.hpp
 ContinuousValueTest_LDADD = \
 	$(PARAMETERSLIBS) \
@@ -49,14 +48,19 @@
 	../Parameters/unittests/ContinuousParameterTest.cpp \
 	../Parameters/unittests/ContinuousParameterTest.hpp \
-	../Parameters/Validators/DummyValidator.hpp \
-	../Parameters/Validators/RangeValidator.hpp \
-	../Parameters/Validators/Validator.hpp \
-	../Parameters/Validators/VectorRangeValidator.hpp \
 	../Parameters/ContinuousValue.hpp \
 	../Parameters/ContinuousValue_impl.hpp \
 	../Parameters/ContinuousParameter.hpp \
 	../Parameters/ContinuousParameter_impl.hpp \
+	../Parameters/Parameter.hpp \
+	../Parameters/Parameter_impl.hpp \
 	../Parameters/ParameterInterface.hpp \
-	../Parameters/Range.hpp \
+	../Parameters/Validators/DiscreteValidator.hpp \
+	../Parameters/Validators/DiscreteValidator_impl.hpp \
+	../Parameters/Validators/DummyValidator.hpp \
+	../Parameters/Validators/RangeValidator.hpp \
+	../Parameters/Validators/RangeValidator_impl.hpp \
+	../Parameters/Validators/Validator.hpp \
+	../Parameters/Value.hpp \
+	../Parameters/Value_impl.hpp \
 	../Parameters/ValueInterface.hpp
 ContinuousParameterTest_LDADD = \
@@ -70,35 +74,34 @@
 	../Parameters/Validators/DiscreteValidator_impl.hpp \
 	../Parameters/Validators/DummyValidator.hpp \
+	../Parameters/Validators/RangeValidator.hpp \
+	../Parameters/Validators/RangeValidator_impl.hpp \
 	../Parameters/Validators/Validator.hpp \
-	../Parameters/DiscreteValue.hpp \
-	../Parameters/DiscreteValue_impl.hpp \
+	../Parameters/Value.hpp \
+	../Parameters/Value_impl.hpp \
 	../Parameters/ValueInterface.hpp
 DiscreteValueTest_LDADD = \
-	$(PARAMETERSLIBS)
+	$(PARAMETERSLIBS) \
+	$(top_builddir)/LinearAlgebra/src/LinearAlgebra/libLinearAlgebra.la
 
 DiscreteParameterTest_SOURCES = $(top_srcdir)/src/unittests/UnitTestMain.cpp \
 	../Parameters/unittests/DiscreteParameterTest.cpp \
 	../Parameters/unittests/DiscreteParameterTest.hpp \
-	../Parameters/Validators/DiscreteValidator.hpp \
-	../Parameters/Validators/DiscreteValidator_impl.hpp \
-	../Parameters/Validators/DummyValidator.hpp \
-	../Parameters/Validators/Validator.hpp \
 	../Parameters/DiscreteValue.hpp \
 	../Parameters/DiscreteValue_impl.hpp \
 	../Parameters/DiscreteParameter.hpp \
 	../Parameters/DiscreteParameter_impl.hpp \
+	../Parameters/Parameter.hpp \
+	../Parameters/Parameter_impl.hpp \
 	../Parameters/ParameterInterface.hpp \
-	../Parameters/ValueInterface.hpp
-DiscreteParameterTest_LDADD = \
-	$(PARAMETERSLIBS)
-
-
-ValueTest_SOURCES = $(top_srcdir)/src/unittests/UnitTestMain.cpp \
-	../Parameters/unittests/ValueTest.cpp \
-	../Parameters/unittests/ValueTest.hpp \
+	../Parameters/Validators/DiscreteValidator.hpp \
+	../Parameters/Validators/DiscreteValidator_impl.hpp \
+	../Parameters/Validators/DummyValidator.hpp \
+	../Parameters/Validators/RangeValidator.hpp \
+	../Parameters/Validators/RangeValidator_impl.hpp \
+	../Parameters/Validators/Validator.hpp \
 	../Parameters/Value.hpp \
 	../Parameters/Value_impl.hpp \
 	../Parameters/ValueInterface.hpp
-ContinuousValueTest_LDADD = \
+DiscreteParameterTest_LDADD = \
 	$(PARAMETERSLIBS) \
 	$(top_builddir)/LinearAlgebra/src/LinearAlgebra/libLinearAlgebra.la
Index: src/Parameters/unittests/ValueTest.cpp
===================================================================
--- src/Parameters/unittests/ValueTest.cpp	(revision 9b5eb03b7cad5e1f2494b404dc68e986b56b0718)
+++ 	(revision )
@@ -1,194 +1,0 @@
-/*
- * Project: MoleCuilder
- * Description: creates and alters molecular systems
- * Copyright (C)  2010-2012 University of Bonn. All rights reserved.
- * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
- */
-
-/*
- * ValueTest.cpp
- *
- *  Created on: Apr 13, 2012
- *      Author: ankele
- */
-
-// include config.h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "ValueTest.hpp"
-
-#include <cppunit/CompilerOutputter.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <cppunit/ui/text/TestRunner.h>
-
-#include "Parameters/Value.hpp"
-#include "Parameters/Validators/DiscreteValidator.hpp"
-#include "Parameters/Validators/RangeValidator.hpp"
-#include "Parameters/Validators/VectorRangeValidator.hpp"
-#include "Parameters/Validators/DummyValidator.hpp"
-
-#ifdef HAVE_TESTRUNNER
-#include "UnitTestMain.hpp"
-#endif /*HAVE_TESTRUNNER*/
-
-using namespace std;
-
-// Registers the fixture into the 'registry'
-CPPUNIT_TEST_SUITE_REGISTRATION( ValueTest );
-
-
-void ValueTest::setUp()
-{
-  // failing asserts should be thrown
-  ASSERT_DO(Assert::Throw);
-
-  for (int i=1; i<=3;++i) {
-    ValidValues.push_back(i);
-  }
-}
-
-void ValueTest::tearDown()
-{
-  ValidValues.clear();
-}
-
-/************************************ tests ***********************************/
-
-
-/** Unit test for isValid.
- *
- */
-void ValueTest::isValidTest()
-{
-  // create instance
-  Value<int> test(ValidValues);
-
-  // checking valid values
-  for (int i=1; i<=3;++i)
-    CPPUNIT_ASSERT_EQUAL(true, test.isValid(i));
-
-  // checking invalid values
-  for (int i=-10; i<=0;++i)
-    CPPUNIT_ASSERT_EQUAL(false, test.isValid(i));
-  for (int i=4; i<=0;++i)
-    CPPUNIT_ASSERT_EQUAL(false, test.isValid(i));
-}
-
-/** Unit test for appendValidValue.
- *
- */
-void ValueTest::appendValidValueTest()
-{
-  // create instance
-  Value<int> test(ValidValues);
-
-  // adding values 4,5,6
-  for (int i=4; i<=6;++i) {
-    CPPUNIT_ASSERT_EQUAL(false, test.isValid(i));
-    dynamic_cast<DiscreteValidator<int> &>(test.getValidator()).appendValidValue(i);
-    CPPUNIT_ASSERT_EQUAL(true, test.isValid(i));
-  }
-
-/*  // adding same value, throws assertion
-  const size_t size_before = test.ValidValues.size();
-#ifndef NDEBUG
-  std::cout << "The following Assert failures are intended and do not indicate a failure of the test." << std::endl;
-  for (int i=1; i<=6;++i)
-    CPPUNIT_ASSERT_THROW(test.appendValidValue(i), Assert::AssertionFailure);
-#endif
-  CPPUNIT_ASSERT_EQUAL( size_before, test.ValidValues.size() );
-
-  // checking valid values
-  for (int i=1; i<=6;++i)
-    CPPUNIT_ASSERT_EQUAL(true, test.isValid(i));
-
-  // checking invalid values
-  for (int i=-10; i<=0;++i)
-    CPPUNIT_ASSERT_EQUAL(false, test.isValid(i));
-
-  // checking invalid values
-  for (int i=7; i<=10;++i)
-    CPPUNIT_ASSERT_EQUAL(false, test.isValid(i));*/
-}
-
-/** Unit test for setters and getters.
- *
- */
-void ValueTest::settergetterTest()
-{
-  // create instance
-  Value<int> test(ValidValues);
-
-  // unset calling of get, throws
-#ifndef NDEBUG
-  std::cout << "The following Assert failures are intended and do not indicate a failure of the test." << std::endl;
-  CPPUNIT_ASSERT_THROW(test.get(), Assert::AssertionFailure);
-#endif
-
-  // setting invalid, throws
-#ifndef NDEBUG
-  std::cout << "The following Assert failures are intended and do not indicate a failure of the test." << std::endl;
-  CPPUNIT_ASSERT_THROW(test.set(4), Assert::AssertionFailure);
-#endif
-#ifndef NDEBUG
-  std::cout << "The following Assert failures are intended and do not indicate a failure of the test." << std::endl;
-  CPPUNIT_ASSERT_THROW(test.set(0), Assert::AssertionFailure);
-#endif
-
-  // checking all valid ones
-  for (int i=1; i<=3;++i) {
-    test.set(i);
-    CPPUNIT_ASSERT_EQUAL(i, test.get());
-  }
-
-}
-
-/** Unit test for comparator.
- *
- */
-void ValueTest::comparatorTest()
-{
-  {
-    // create instance
-    Value<int> test(ValidValues);
-    Value<int> instance(ValidValues);
-    test.set(1);
-    instance.set(1);
-
-    // same value, same range
-    {
-      CPPUNIT_ASSERT(test == instance);
-    }
-
-    // different value, same range
-    {
-      const int oldvalue = instance.get();
-      instance.set(2);
-      CPPUNIT_ASSERT(test != instance);
-      instance.set(oldvalue);
-    }
-  }
-  {
-    Value<int> test(ValidValues);
-    Value<int> instance(ValidValues);
-    dynamic_cast<DiscreteValidator<int> &>(instance.getValidator()).appendValidValue(4);
-
-    test.set(1);
-    instance.set(1);
-
-    // same value, same range
-    {
-      //CPPUNIT_ASSERT(test != instance);
-    }
-
-    // different value, same range
-    {
-      const int oldvalue = instance.get();
-      instance.set(2);
-      CPPUNIT_ASSERT(test != instance);
-      instance.set(oldvalue);
-    }
-  }
-}
Index: src/Parameters/unittests/ValueTest.hpp
===================================================================
--- src/Parameters/unittests/ValueTest.hpp	(revision 9b5eb03b7cad5e1f2494b404dc68e986b56b0718)
+++ 	(revision )
@@ -1,41 +1,0 @@
-/*
- * ValueTest.hpp
- *
- *  Created on: Apr 13, 2012
- *      Author: ankele
- */
-#ifndef DISCRETEVALUETEST_HPP_
-#define DISCRETEVALUETEST_HPP_
-
-// include config.h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <cppunit/extensions/HelperMacros.h>
-
-#include <vector>
-
-class ValueTest :  public CppUnit::TestFixture
-{
-  CPPUNIT_TEST_SUITE( ValueTest ) ;
-  CPPUNIT_TEST ( isValidTest );
-  CPPUNIT_TEST ( appendValidValueTest );
-  CPPUNIT_TEST ( settergetterTest );
-  CPPUNIT_TEST ( comparatorTest );
-  CPPUNIT_TEST_SUITE_END();
-
-public:
-  void setUp();
-  void tearDown();
-
-  void isValidTest();
-  void appendValidValueTest();
-  void settergetterTest();
-  void comparatorTest();
-
-private:
-  std::vector<int> ValidValues;
-};
-
-#endif /* DISCRETEVALUETEST_HPP_ */
