Index: src/Parser/Parameters/ContinuousParameter.hpp
===================================================================
--- src/Parser/Parameters/ContinuousParameter.hpp	(revision 39fa96414c2fb9b7b844fefc27eef74da86fe2ac)
+++ src/Parser/Parameters/ContinuousParameter.hpp	(revision 6b522838f6543ee1ab24529fca07826520e8de92)
@@ -30,4 +30,9 @@
   virtual ~ContinuousParameter();
 
+  // comparator
+  bool operator==(const ContinuousParameter<T> &_instance) const;
+  bool operator!=(const ContinuousParameter<T> &_instance) const
+      { return !((*this)==(_instance)); }
+
   Parameter* clone() const;
 
Index: src/Parser/Parameters/ContinuousParameter_impl.hpp
===================================================================
--- src/Parser/Parameters/ContinuousParameter_impl.hpp	(revision 39fa96414c2fb9b7b844fefc27eef74da86fe2ac)
+++ src/Parser/Parameters/ContinuousParameter_impl.hpp	(revision 6b522838f6543ee1ab24529fca07826520e8de92)
@@ -42,4 +42,19 @@
 {};
 
+/** Compares this continuous value against another \a _instance.
+ *
+ * @param _instance other value to compare to
+ * @return true - if contained ContinuousValue and name are the same, false - else
+ */
+template <class T>
+bool ContinuousParameter<T>::operator==(const ContinuousParameter<T> &_instance) const
+{
+  bool status = true;
+  status = status &&
+      (*dynamic_cast<const ContinuousValue<T> *>(this) == dynamic_cast<const ContinuousValue<T> &>(_instance));
+  status = status && (Parameter::getName() == _instance.Parameter::getName());
+  return status;
+}
+
 /** Creates a clone of this Parameter instance.
  *
Index: src/Parser/Parameters/DiscreteParameter.hpp
===================================================================
--- src/Parser/Parameters/DiscreteParameter.hpp	(revision 39fa96414c2fb9b7b844fefc27eef74da86fe2ac)
+++ src/Parser/Parameters/DiscreteParameter.hpp	(revision 6b522838f6543ee1ab24529fca07826520e8de92)
@@ -32,4 +32,9 @@
   virtual ~DiscreteParameter();
 
+  // comparator
+  bool operator==(const DiscreteParameter<T> &_instance) const;
+  bool operator!=(const DiscreteParameter<T> &_instance) const
+      { return !((*this)==(_instance)); }
+
   Parameter* clone() const;
 
Index: src/Parser/Parameters/DiscreteParameter_impl.hpp
===================================================================
--- src/Parser/Parameters/DiscreteParameter_impl.hpp	(revision 39fa96414c2fb9b7b844fefc27eef74da86fe2ac)
+++ src/Parser/Parameters/DiscreteParameter_impl.hpp	(revision 6b522838f6543ee1ab24529fca07826520e8de92)
@@ -44,4 +44,19 @@
 {};
 
+/** Compares this discrete value against another \a _instance.
+ *
+ * @param _instance other value to compare to
+ * @return true - if contained DiscreteValue and name are the same, false - else
+ */
+template <class T>
+bool DiscreteParameter<T>::operator==(const DiscreteParameter<T> &_instance) const
+{
+  bool status = true;
+  status = status &&
+      (*dynamic_cast<const DiscreteValue<T> *>(this) == dynamic_cast<const DiscreteValue<T> &>(_instance));
+  status = status && (Parameter::getName() == _instance.Parameter::getName());
+  return status;
+}
+
 /** Creates a clone of this Parameter instance.
  *
Index: src/Parser/Parameters/unittests/ContinuousParameterUnitTest.cpp
===================================================================
--- src/Parser/Parameters/unittests/ContinuousParameterUnitTest.cpp	(revision 39fa96414c2fb9b7b844fefc27eef74da86fe2ac)
+++ src/Parser/Parameters/unittests/ContinuousParameterUnitTest.cpp	(revision 6b522838f6543ee1ab24529fca07826520e8de92)
@@ -51,4 +51,27 @@
 /************************************ tests ***********************************/
 
+/** Unit test for comparator.
+ *
+ */
+void ContinuousParameterTest::comparatorTest()
+{
+  // create instance
+  ContinuousParameter<int> test("intParam", *ValidRange);
+  ContinuousParameter<int> samenamedsamevalued("intParam", *ValidRange);
+  ContinuousParameter<int> samenamedelsevalued("intParam", *ValidRange);
+  ContinuousParameter<int> elsenamedsamevalued("int2Param", *ValidRange);
+  ContinuousParameter<int> elsenamedelsevalued("int2Param", *ValidRange);
+  test.setValue(1);
+  samenamedsamevalued.setValue(1);
+  samenamedelsevalued.setValue(2);
+  elsenamedsamevalued.setValue(1);
+  elsenamedelsevalued.setValue(2);
+
+  CPPUNIT_ASSERT( test == samenamedsamevalued );
+  CPPUNIT_ASSERT( test != samenamedelsevalued );
+  CPPUNIT_ASSERT( test != elsenamedsamevalued );
+  CPPUNIT_ASSERT( test != elsenamedelsevalued );
+}
+
 /** Unit test for clone.
  *
Index: src/Parser/Parameters/unittests/ContinuousParameterUnitTest.hpp
===================================================================
--- src/Parser/Parameters/unittests/ContinuousParameterUnitTest.hpp	(revision 39fa96414c2fb9b7b844fefc27eef74da86fe2ac)
+++ src/Parser/Parameters/unittests/ContinuousParameterUnitTest.hpp	(revision 6b522838f6543ee1ab24529fca07826520e8de92)
@@ -22,4 +22,5 @@
 {
   CPPUNIT_TEST_SUITE( ContinuousParameterTest ) ;
+  CPPUNIT_TEST ( comparatorTest );
   CPPUNIT_TEST ( cloneTest );
   CPPUNIT_TEST_SUITE_END();
@@ -29,4 +30,5 @@
   void tearDown();
 
+  void comparatorTest();
   void cloneTest();
 
Index: src/Parser/Parameters/unittests/DiscreteParameterUnitTest.cpp
===================================================================
--- src/Parser/Parameters/unittests/DiscreteParameterUnitTest.cpp	(revision 39fa96414c2fb9b7b844fefc27eef74da86fe2ac)
+++ src/Parser/Parameters/unittests/DiscreteParameterUnitTest.cpp	(revision 6b522838f6543ee1ab24529fca07826520e8de92)
@@ -53,4 +53,27 @@
 /************************************ tests ***********************************/
 
+/** Unit test for comparator.
+ *
+ */
+void DiscreteParameterTest::comparatorTest()
+{
+  // create instance
+  DiscreteParameter<int> test("intParam", ValidValues);
+  DiscreteParameter<int> samenamedsamevalued("intParam", ValidValues);
+  DiscreteParameter<int> samenamedelsevalued("intParam", ValidValues);
+  DiscreteParameter<int> elsenamedsamevalued("int2Param", ValidValues);
+  DiscreteParameter<int> elsenamedelsevalued("int2Param", ValidValues);
+  test.setValue(1);
+  samenamedsamevalued.setValue(1);
+  samenamedelsevalued.setValue(2);
+  elsenamedsamevalued.setValue(1);
+  elsenamedelsevalued.setValue(2);
+
+  CPPUNIT_ASSERT( test == samenamedsamevalued );
+  CPPUNIT_ASSERT( test != samenamedelsevalued );
+  CPPUNIT_ASSERT( test != elsenamedsamevalued );
+  CPPUNIT_ASSERT( test != elsenamedelsevalued );
+}
+
 /** Unit test for clone.
  *
Index: src/Parser/Parameters/unittests/DiscreteParameterUnitTest.hpp
===================================================================
--- src/Parser/Parameters/unittests/DiscreteParameterUnitTest.hpp	(revision 39fa96414c2fb9b7b844fefc27eef74da86fe2ac)
+++ src/Parser/Parameters/unittests/DiscreteParameterUnitTest.hpp	(revision 6b522838f6543ee1ab24529fca07826520e8de92)
@@ -20,4 +20,5 @@
 {
   CPPUNIT_TEST_SUITE( DiscreteParameterTest ) ;
+  CPPUNIT_TEST ( comparatorTest );
   CPPUNIT_TEST ( cloneTest );
   CPPUNIT_TEST_SUITE_END();
@@ -27,4 +28,5 @@
   void tearDown();
 
+  void comparatorTest();
   void cloneTest();
 
