Index: src/Parameters/Validators/DiscreteValidator.hpp
===================================================================
--- src/Parameters/Validators/DiscreteValidator.hpp	(revision 9b5eb03b7cad5e1f2494b404dc68e986b56b0718)
+++ src/Parameters/Validators/DiscreteValidator.hpp	(revision 3c5ef5bb765011de2d2ec540988045f312368c01)
@@ -19,4 +19,6 @@
 #include <vector>
 
+class DiscreteValueTest;
+
 /** A validator with a discrete list of valid values.
  *
@@ -25,4 +27,6 @@
 class DiscreteValidator : public Validator<T>
 {
+  //!> unit test needs to have access to internal values
+  friend class DiscreteValueTest;
 public:
   DiscreteValidator(const std::vector<T> &_ValidValues) : ValidValues(_ValidValues) {};
Index: src/Parameters/Validators/DiscreteValidator_impl.hpp
===================================================================
--- src/Parameters/Validators/DiscreteValidator_impl.hpp	(revision 9b5eb03b7cad5e1f2494b404dc68e986b56b0718)
+++ src/Parameters/Validators/DiscreteValidator_impl.hpp	(revision 3c5ef5bb765011de2d2ec540988045f312368c01)
@@ -52,4 +52,11 @@
 }
 
+
+template <class T>
+const std::vector<T> &DiscreteValidator<T>::getValidValues() const
+{
+  return ValidValues;
+}
+
 /** Internal function for finding the index of a desired value.
  *
Index: src/Parameters/Validators/RangeValidator.hpp
===================================================================
--- src/Parameters/Validators/RangeValidator.hpp	(revision 9b5eb03b7cad5e1f2494b404dc68e986b56b0718)
+++ src/Parameters/Validators/RangeValidator.hpp	(revision 3c5ef5bb765011de2d2ec540988045f312368c01)
@@ -28,29 +28,14 @@
   virtual ~RangeValidator() {};
 
-  bool isValid(const T & _value) const
-  {
-    bool isBefore = true;
-    bool isBeyond = true;
-    // check left boundary
-    isBefore = ValidRange.isBefore(_value);
-  //  if (isBefore)
-  //    LOG(0, "INFO: " << _value << " is before " << ValidRange.first << ".");
-    // check right boundary
-    isBeyond = ValidRange.isBeyond(_value) && (_value != ValidRange.last);
-  //  if (isBeyond)
-  //    LOG(0, "INFO: " << _value << " is beyond " << ValidRange.last << ".");
-    return (!isBefore) && (!isBeyond);
-  }
+  bool isValid(const T & _value) const;
 
-  Validator<T>* clone() const { return new RangeValidator<T>(ValidRange); };
+  Validator<T>* clone() const;
 
   // comparator
-  bool operator==(const Validator<T> &_instance) const
-  {
-    const RangeValidator<T> *inst = dynamic_cast<const RangeValidator<T> *>(&_instance);
-    if (inst)
-      return ValidRange == inst->ValidRange;
-    return false;
-  };
+  bool operator==(const Validator<T> &_instance) const;
+
+  // getter/setter for valid ranges
+  void setValidRange(const range<T> &_range);
+  const range<T> & getValidRange() const {  return ValidRange;  };
 
 private:
@@ -60,4 +45,6 @@
 
 
+#include "RangeValidator_impl.hpp"
+
 
 #endif /* RANGEVALIDATOR_HPP_ */
Index: src/Parameters/Validators/RangeValidator_impl.hpp
===================================================================
--- src/Parameters/Validators/RangeValidator_impl.hpp	(revision 3c5ef5bb765011de2d2ec540988045f312368c01)
+++ src/Parameters/Validators/RangeValidator_impl.hpp	(revision 3c5ef5bb765011de2d2ec540988045f312368c01)
@@ -0,0 +1,81 @@
+/*
+ * RangeValidator_impl.hpp
+ *
+ *  Created on: Apr 16, 2012
+ *      Author: ankele
+ */
+
+#ifndef RANGEVALIDATOR_IMPL_HPP_
+#define RANGEVALIDATOR_IMPL_HPP_
+
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+template <class T>
+bool RangeValidator<T>::isValid(const T & _value) const
+{
+  bool isBefore = true;
+  bool isBeyond = true;
+  // check left boundary
+  isBefore = ValidRange.isBefore(_value);
+//  if (isBefore)
+//    LOG(0, "INFO: " << _value << " is before " << ValidRange.first << ".");
+  // check right boundary
+  isBeyond = ValidRange.isBeyond(_value) && (_value != ValidRange.last);
+//  if (isBeyond)
+//    LOG(0, "INFO: " << _value << " is beyond " << ValidRange.last << ".");
+  return (!isBefore) && (!isBeyond);
+}
+
+template <class T>
+Validator<T>* RangeValidator<T>::clone() const
+{
+  return new RangeValidator<T>(ValidRange);
+};
+
+// comparator
+template <class T>
+bool RangeValidator<T>::operator==(const Validator<T> &_instance) const
+{
+  const RangeValidator<T> *inst = dynamic_cast<const RangeValidator<T> *>(&_instance);
+  if (inst)
+    return ValidRange == inst->ValidRange;
+  return false;
+};
+
+
+/** Setter for the valid range.
+ *
+ * If value is invalid in new range, we throw AssertFailure and set ValueSet to false.
+ *
+ * @param _range range (pair of values)
+ */
+template <class T>
+void RangeValidator<T>::setValidRange(const range<T> &_range)
+{
+  ValidRange = _range;
+}
+
+
+
+
+
+
+// specialization for Vector
+#include "LinearAlgebra/Vector.hpp"
+
+class Vector;
+
+template <>
+bool RangeValidator<Vector>::isValid(const Vector & _value) const
+{
+  return ValidRange.first[0] <= _value[0] && _value[0] < ValidRange.last[0] &&
+         ValidRange.first[1] <= _value[1] && _value[1] < ValidRange.last[1] &&
+         ValidRange.first[2] <= _value[2] && _value[2] < ValidRange.last[2];
+}
+
+
+#endif /* RANGEVALIDATOR_IMPL_HPP_ */
Index: src/Parameters/Validators/VectorRangeValidator.hpp
===================================================================
--- src/Parameters/Validators/VectorRangeValidator.hpp	(revision 9b5eb03b7cad5e1f2494b404dc68e986b56b0718)
+++ 	(revision )
@@ -1,55 +1,0 @@
-/*
- * VectorRangeValidator.hpp
- *
- *  Created on: Apr 13, 2012
- *      Author: ankele
- */
-
-#ifndef VECTORRANGEVALIDATOR_HPP_
-#define VECTORRANGEVALIDATOR_HPP_
-
-
-// include config.h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "Validator.hpp"
-#include "CodePatterns/Range.hpp"
-
-/** A validator with an interval of valid values.
- *
- */
-template <class T>
-class VectorRangeValidator : public Validator<T>
-{
-public:
-  VectorRangeValidator(const range<T> &_ValidRange) : ValidRange(_ValidRange) {};
-  virtual ~VectorRangeValidator() {};
-
-  bool isValid(const T & _value) const
-  {
-    return ValidRange.first[0] <= _value[0] && _value[0] < ValidRange.last[0] &&
-           ValidRange.first[1] <= _value[1] && _value[1] < ValidRange.last[1] &&
-           ValidRange.first[2] <= _value[2] && _value[2] < ValidRange.last[2];
-  }
-
-  Validator<T>* clone() const { return new RangeValidator<T>(ValidRange); };
-
-  // comparator
-  bool operator==(const Validator<T> &_instance) const
-  {
-    const VectorRangeValidator<T> *inst = dynamic_cast<const VectorRangeValidator<T> *>(&_instance);
-    if (inst)
-      return ValidRange == inst->ValidRange;
-    return false;
-  };
-
-private:
-  //!> valid range of values
-  range<T> ValidRange;
-};
-
-
-
-#endif /* VECTORRANGEVALIDATOR_HPP_ */
