Index: src/Parameters/Makefile.am
===================================================================
--- src/Parameters/Makefile.am	(revision a315e80cd5cd922cd49fb50f0c1889a91ec2f54f)
+++ src/Parameters/Makefile.am	(revision af4318055e87f2e2ad453824e664b6e3e99e56ac)
@@ -36,4 +36,5 @@
 	Parameters/Validators/DummyValidator.hpp \
 	Parameters/Validators/GenericValidators.hpp \
+	Parameters/Validators/GenericValidators_impl.hpp \
 	Parameters/Validators/Ops_Validator.hpp \
 	Parameters/Validators/Ops_Validator_impl.hpp \
Index: src/Parameters/Validators/GenericValidators.hpp
===================================================================
--- src/Parameters/Validators/GenericValidators.hpp	(revision a315e80cd5cd922cd49fb50f0c1889a91ec2f54f)
+++ src/Parameters/Validators/GenericValidators.hpp	(revision af4318055e87f2e2ad453824e664b6e3e99e56ac)
@@ -15,24 +15,48 @@
 #endif
 
-#include "Parameters/Validators/DummyValidator.hpp"
+#include "Parameters/Validators/Validator.hpp"
 
 /** This validator checks whether the given value is positive.
  */
 template <class T>
-class PositiveValidator : public DummyValidator<T>
-{};
+class PositiveValidator : public Validator<T>
+{
+  bool isValid(const T & _value) const;
+  Validator<T>* clone() const;
+  bool operator==(const Validator<T> &_instance) const;
+};
 
 /** This validator checks whether the given value is not zero.
  */
 template <class T>
-class NotZeroValidator : public DummyValidator<T>
-{};
+class NotZeroValidator : public Validator<T>
+{
+  bool isValid(const T & _value) const;
+  Validator<T>* clone() const;
+  bool operator==(const Validator<T> &_instance) const;
+};
 
 /** This validator checks whether the given value is non-negative.
  */
 template <class T>
-class NonNegativeValidator : public DummyValidator<T>
-{};
+class NonNegativeValidator : public Validator<T>
+{
+  bool isValid(const T & _value) const;
+  Validator<T>* clone() const;
+  bool operator==(const Validator<T> &_instance) const;
+};
 
+/** This validator checks whether the given value is negative.
+ */
+template <class T>
+class NegativeValidator : public Validator<T>
+{
+  bool isValid(const T & _value) const;
+  Validator<T>* clone() const;
+  bool operator==(const Validator<T> &_instance) const;
+};
+
+
+#include "GenericValidators_impl.hpp"
 
 
Index: src/Parameters/Validators/GenericValidators_impl.hpp
===================================================================
--- src/Parameters/Validators/GenericValidators_impl.hpp	(revision af4318055e87f2e2ad453824e664b6e3e99e56ac)
+++ src/Parameters/Validators/GenericValidators_impl.hpp	(revision af4318055e87f2e2ad453824e664b6e3e99e56ac)
@@ -0,0 +1,102 @@
+/*
+ * GenericValidators_impl.hpp
+ *
+ *  Created on: Aug 5, 2013
+ *      Author: heber
+ */
+
+#ifndef GENERICVALIDATORS_IMPL_HPP_
+#define GENERICVALIDATORS_IMPL_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "GenericValidators.hpp"
+
+template <typename T>
+bool PositiveValidator<T>::isValid(const T & _value) const
+{
+  return _value > 0;
+}
+
+template <class T>
+Validator<T>* PositiveValidator<T>::clone() const
+{
+  return new PositiveValidator<T>();
+}
+
+template <class T>
+bool PositiveValidator<T>::operator==(const Validator<T> &_instance) const
+{
+  const PositiveValidator<T> *inst = dynamic_cast<const PositiveValidator<T> *>(&_instance);
+  if (inst)
+    return true;
+  return false;
+}
+
+template <typename T>
+bool NonNegativeValidator<T>::isValid(const T & _value) const
+{
+  return _value >= 0;
+}
+
+template <class T>
+Validator<T>* NonNegativeValidator<T>::clone() const
+{
+  return new NonNegativeValidator<T>();
+}
+
+template <class T>
+bool NonNegativeValidator<T>::operator==(const Validator<T> &_instance) const
+{
+  const NonNegativeValidator<T> *inst = dynamic_cast<const NonNegativeValidator<T> *>(&_instance);
+  if (inst)
+    return true;
+  return false;
+}
+
+template <typename T>
+bool NegativeValidator<T>::isValid(const T & _value) const
+{
+  return _value < 0;
+}
+
+template <class T>
+Validator<T>* NegativeValidator<T>::clone() const
+{
+  return new NegativeValidator<T>();
+}
+
+template <class T>
+bool NegativeValidator<T>::operator==(const Validator<T> &_instance) const
+{
+  const NegativeValidator<T> *inst = dynamic_cast<const NegativeValidator<T> *>(&_instance);
+  if (inst)
+    return true;
+  return false;
+}
+
+template <typename T>
+bool NotZeroValidator<T>::isValid(const T & _value) const
+{
+  return _value != 0;
+}
+
+template <class T>
+Validator<T>* NotZeroValidator<T>::clone() const
+{
+  return new NotZeroValidator<T>();
+}
+
+template <class T>
+bool NotZeroValidator<T>::operator==(const Validator<T> &_instance) const
+{
+  const NotZeroValidator<T> *inst = dynamic_cast<const NotZeroValidator<T> *>(&_instance);
+  if (inst)
+    return true;
+  return false;
+}
+
+#endif /* GENERICVALIDATORS_IMPL_HPP_ */
