Index: src/Potentials/Specifics/ManyBodyPotential_Tersoff.cpp
===================================================================
--- src/Potentials/Specifics/ManyBodyPotential_Tersoff.cpp	(revision 6efcaec4b6119396e4609fd8ec76dda69a50c32f)
+++ src/Potentials/Specifics/ManyBodyPotential_Tersoff.cpp	(revision 0496af770fd03f6a308156b13e9d19fb5e12e600)
@@ -39,6 +39,8 @@
 #include "ManyBodyPotential_Tersoff.hpp"
 
+#include <boost/assign/list_of.hpp> // for 'map_list_of()'
 #include <boost/bind.hpp>
 #include <cmath>
+#include <string>
 
 #include "CodePatterns/Assert.hpp"
@@ -48,7 +50,32 @@
 #include "Potentials/helpers.hpp"
 
+// static definitions
+const ManyBodyPotential_Tersoff::ParameterNames_t
+ManyBodyPotential_Tersoff::ParameterNames =
+      boost::assign::list_of<std::string>
+      ("A")
+      ("B")
+      ("lambda")
+      ("mu")
+      ("beta")
+      ("n")
+      ("c")
+      ("d")
+      ("h")
+      ("offset")
+//      ("R")
+//      ("S")
+//      ("lambda3")
+//      ("alpha")
+//      ("chi")
+//      ("omega")
+    ;
+const std::string ManyBodyPotential_Tersoff::potential_token("tersoff");
+
 ManyBodyPotential_Tersoff::ManyBodyPotential_Tersoff(
+    const ParticleTypes_t &_ParticleTypes,
     boost::function< std::vector<arguments_t>(const argument_t &, const double)> &_triplefunction
     ) :
+    SerializablePotential(_ParticleTypes),
     params(parameters_t(MAXPARAMS, 0.)),
     R(3.2),
@@ -62,4 +89,5 @@
 
 ManyBodyPotential_Tersoff::ManyBodyPotential_Tersoff(
+    const ParticleTypes_t &_ParticleTypes,
     const double &_R,
     const double &_S,
@@ -79,4 +107,5 @@
     const double &_offset,
     boost::function< std::vector<arguments_t>(const argument_t &, const double)> &_triplefunction) :
+  SerializablePotential(_ParticleTypes),
   params(parameters_t(MAXPARAMS, 0.)),
   R(_R),
Index: src/Potentials/Specifics/ManyBodyPotential_Tersoff.hpp
===================================================================
--- src/Potentials/Specifics/ManyBodyPotential_Tersoff.hpp	(revision 6efcaec4b6119396e4609fd8ec76dda69a50c32f)
+++ src/Potentials/Specifics/ManyBodyPotential_Tersoff.hpp	(revision 0496af770fd03f6a308156b13e9d19fb5e12e600)
@@ -19,4 +19,5 @@
 
 #include "Potentials/EmpiricalPotential.hpp"
+#include "Potentials/SerializablePotential.hpp"
 #include "FunctionApproximation/FunctionModel.hpp"
 
@@ -28,5 +29,8 @@
  *
  */
-class ManyBodyPotential_Tersoff : virtual public EmpiricalPotential, virtual public FunctionModel
+class ManyBodyPotential_Tersoff :
+  virtual public EmpiricalPotential,
+  virtual public FunctionModel,
+  virtual public SerializablePotential
 {
   //!> grant unit test access to internal parts
@@ -46,4 +50,5 @@
    */
   ManyBodyPotential_Tersoff(
+      const ParticleTypes_t &_ParticleTypes,
       boost::function< std::vector<arguments_t>(const argument_t &, const double)> &_triplefunction
       );
@@ -72,4 +77,5 @@
    */
   ManyBodyPotential_Tersoff(
+      const ParticleTypes_t &_ParticleTypes,
       const double &_R,
       const double &_S,
@@ -124,7 +130,15 @@
    * \return token name of the potential
    */
-  const std::string getToken() const {
-    return std::string("tersoff");
-  }
+  const std::string& getToken() const
+  { return potential_token; }
+
+  /** Returns a vector of parameter names.
+   *
+   * This is required from the specific implementation
+   *
+   * \return vector of strings containing parameter names
+   */
+  const ParameterNames_t& getParameterNames() const
+  { return ParameterNames; }
 
   /** States whether lower and upper boundaries should be used to constraint
@@ -308,4 +322,10 @@
   //!> bound function that obtains the triples for the internal coordinationb summation.
   const boost::function< std::vector< arguments_t >(const argument_t &, const double)> &triplefunction;
+
+  //!> static definitions of the parameter name for this potential
+  static const ParameterNames_t ParameterNames;
+
+  //!> static token of this potential type
+  static const std::string potential_token;
 };
 
Index: src/Potentials/Specifics/PairPotential_Angle.cpp
===================================================================
--- src/Potentials/Specifics/PairPotential_Angle.cpp	(revision 6efcaec4b6119396e4609fd8ec76dda69a50c32f)
+++ src/Potentials/Specifics/PairPotential_Angle.cpp	(revision 0496af770fd03f6a308156b13e9d19fb5e12e600)
@@ -39,17 +39,35 @@
 #include "PairPotential_Angle.hpp"
 
+#include <boost/assign/list_of.hpp> // for 'map_list_of()'
+#include <string>
+
 #include "CodePatterns/Assert.hpp"
 
 #include "Potentials/helpers.hpp"
 
-PairPotential_Angle::PairPotential_Angle() :
+// static definitions
+const PairPotential_Angle::ParameterNames_t
+PairPotential_Angle::ParameterNames =
+      boost::assign::list_of<std::string>
+      ("spring_constant")
+      ("equilibrium_distance")
+      ("") //energy_offset
+    ;
+const std::string PairPotential_Angle::potential_token("harmonic_angle");
+
+PairPotential_Angle::PairPotential_Angle(
+    const ParticleTypes_t &_ParticleTypes
+    ) :
+  SerializablePotential(_ParticleTypes),
   params(parameters_t(MAXPARAMS, 0.))
 {}
 
 PairPotential_Angle::PairPotential_Angle(
+    const ParticleTypes_t &_ParticleTypes,
     const double _spring_constant,
     const double _equilibrium_distance,
     const double _energy_offset) :
-      params(parameters_t(MAXPARAMS, 0.))
+  SerializablePotential(_ParticleTypes),
+  params(parameters_t(MAXPARAMS, 0.))
 {
   params[spring_constant] = _spring_constant;
Index: src/Potentials/Specifics/PairPotential_Angle.hpp
===================================================================
--- src/Potentials/Specifics/PairPotential_Angle.hpp	(revision 6efcaec4b6119396e4609fd8ec76dda69a50c32f)
+++ src/Potentials/Specifics/PairPotential_Angle.hpp	(revision 0496af770fd03f6a308156b13e9d19fb5e12e600)
@@ -20,4 +20,5 @@
 
 #include "Potentials/EmpiricalPotential.hpp"
+#include "Potentials/SerializablePotential.hpp"
 #include "FunctionApproximation/FunctionModel.hpp"
 
@@ -27,5 +28,8 @@
  *
  */
-class PairPotential_Angle : virtual public EmpiricalPotential, virtual public FunctionModel
+class PairPotential_Angle :
+  virtual public EmpiricalPotential,
+  virtual public FunctionModel,
+  virtual public SerializablePotential
 {
   //!> grant unit test access to internal parts
@@ -38,6 +42,7 @@
   typedef FunctionModel::parameters_t parameters_t;
 public:
-  PairPotential_Angle();
+  PairPotential_Angle(const ParticleTypes_t &_ParticleTypes);
   PairPotential_Angle(
+      const ParticleTypes_t &_ParticleTypes,
       const double _spring_constant,
       const double _equilibrium_distance,
@@ -97,7 +102,15 @@
    * \return token name of the potential
    */
-  const std::string getToken() const {
-    return std::string("harmonic_angle");
-  }
+  const std::string& getToken() const
+  { return potential_token; }
+
+  /** Returns a vector of parameter names.
+   *
+   * This is required from the specific implementation
+   *
+   * \return vector of strings containing parameter names
+   */
+  const ParameterNames_t& getParameterNames() const
+  { return ParameterNames; }
 
   /** States whether lower and upper boundaries should be used to constraint
@@ -149,4 +162,10 @@
   //!> parameter vector with parameters as in enum parameter_enum_t
   parameters_t params;
+
+  //!> static definitions of the parameter name for this potential
+  static const ParameterNames_t ParameterNames;
+
+  //!> static token of this potential type
+  static const std::string potential_token;
 };
 
Index: src/Potentials/Specifics/PairPotential_Harmonic.cpp
===================================================================
--- src/Potentials/Specifics/PairPotential_Harmonic.cpp	(revision 6efcaec4b6119396e4609fd8ec76dda69a50c32f)
+++ src/Potentials/Specifics/PairPotential_Harmonic.cpp	(revision 0496af770fd03f6a308156b13e9d19fb5e12e600)
@@ -39,17 +39,34 @@
 #include "PairPotential_Harmonic.hpp"
 
+#include <boost/assign/list_of.hpp> // for 'map_list_of()'
+#include <string>
+
 #include "CodePatterns/Assert.hpp"
 
 #include "Potentials/helpers.hpp"
 
-PairPotential_Harmonic::PairPotential_Harmonic() :
+// static definitions
+const PairPotential_Harmonic::ParameterNames_t
+PairPotential_Harmonic::ParameterNames =
+      boost::assign::list_of<std::string>
+      ("spring_constant")
+      ("equilibrium_distance")
+      ("") //energy_offset
+    ;
+const std::string PairPotential_Harmonic::potential_token("harmonic_bond");
+
+PairPotential_Harmonic::PairPotential_Harmonic(
+    const ParticleTypes_t &_ParticleTypes) :
+    SerializablePotential(_ParticleTypes),
   params(parameters_t(MAXPARAMS, 0.))
 {}
 
 PairPotential_Harmonic::PairPotential_Harmonic(
+    const ParticleTypes_t &_ParticleTypes,
     const double _spring_constant,
     const double _equilibrium_distance,
     const double _energy_offset) :
-      params(parameters_t(MAXPARAMS, 0.))
+  SerializablePotential(_ParticleTypes),
+  params(parameters_t(MAXPARAMS, 0.))
 {
   params[spring_constant] = _spring_constant;
Index: src/Potentials/Specifics/PairPotential_Harmonic.hpp
===================================================================
--- src/Potentials/Specifics/PairPotential_Harmonic.hpp	(revision 6efcaec4b6119396e4609fd8ec76dda69a50c32f)
+++ src/Potentials/Specifics/PairPotential_Harmonic.hpp	(revision 0496af770fd03f6a308156b13e9d19fb5e12e600)
@@ -20,4 +20,5 @@
 
 #include "Potentials/EmpiricalPotential.hpp"
+#include "Potentials/SerializablePotential.hpp"
 #include "FunctionApproximation/FunctionModel.hpp"
 
@@ -27,5 +28,8 @@
  *
  */
-class PairPotential_Harmonic : virtual public EmpiricalPotential, virtual public FunctionModel
+class PairPotential_Harmonic :
+  virtual public EmpiricalPotential,
+  virtual public FunctionModel,
+  virtual public SerializablePotential
 {
   //!> grant unit test access to internal parts
@@ -38,6 +42,7 @@
   typedef FunctionModel::parameters_t parameters_t;
 public:
-  PairPotential_Harmonic();
+  PairPotential_Harmonic(const ParticleTypes_t &_ParticleTypes);
   PairPotential_Harmonic(
+      const ParticleTypes_t &_ParticleTypes,
       const double _spring_constant,
       const double _equilibrium_distance,
@@ -126,7 +131,15 @@
    * \return token name of the potential
    */
-  const std::string getToken() const {
-    return std::string("harmonic_bond");
-  }
+  const std::string& getToken() const
+  { return potential_token; }
+
+  /** Returns a vector of parameter names.
+   *
+   * This is required from the specific implementation
+   *
+   * \return vector of strings containing parameter names
+   */
+  const ParameterNames_t& getParameterNames() const
+  { return ParameterNames; }
 
   enum parameter_enum_t {
@@ -139,4 +152,10 @@
   //!> parameter vector with parameters as in enum parameter_enum_t
   parameters_t params;
+
+  //!> static definitions of the parameter name for this potential
+  static const ParameterNames_t ParameterNames;
+
+  //!> static token of this potential type
+  static const std::string potential_token;
 };
 
Index: src/Potentials/Specifics/PairPotential_Morse.cpp
===================================================================
--- src/Potentials/Specifics/PairPotential_Morse.cpp	(revision 6efcaec4b6119396e4609fd8ec76dda69a50c32f)
+++ src/Potentials/Specifics/PairPotential_Morse.cpp	(revision 0496af770fd03f6a308156b13e9d19fb5e12e600)
@@ -39,5 +39,7 @@
 #include "PairPotential_Morse.hpp"
 
+#include <boost/assign/list_of.hpp> // for 'map_list_of()'
 #include <cmath>
+#include <string>
 
 #include "CodePatterns/Assert.hpp"
@@ -45,14 +47,30 @@
 #include "Potentials/helpers.hpp"
 
-PairPotential_Morse::PairPotential_Morse() :
+// static definitions
+const PairPotential_Morse::ParameterNames_t
+PairPotential_Morse::ParameterNames =
+      boost::assign::list_of<std::string>
+      ("spring_constant")
+      ("equilibrium_distance")
+      ("dissociation_energy")
+      ("") //energy_offset
+    ;
+const std::string PairPotential_Morse::potential_token("morse");
+
+PairPotential_Morse::PairPotential_Morse(
+    const ParticleTypes_t &_ParticleTypes
+    ) :
+  SerializablePotential(_ParticleTypes),
   params(parameters_t(MAXPARAMS, 0.))
 {}
 
 PairPotential_Morse::PairPotential_Morse(
+    const ParticleTypes_t &_ParticleTypes,
     const double _spring_constant,
     const double _equilibrium_distance,
     const double _dissociation_energy,
     const double _energy_offset) :
-      params(parameters_t(MAXPARAMS, 0.))
+  SerializablePotential(_ParticleTypes),
+  params(parameters_t(MAXPARAMS, 0.))
 {
   params[spring_constant] = _spring_constant;
Index: src/Potentials/Specifics/PairPotential_Morse.hpp
===================================================================
--- src/Potentials/Specifics/PairPotential_Morse.hpp	(revision 6efcaec4b6119396e4609fd8ec76dda69a50c32f)
+++ src/Potentials/Specifics/PairPotential_Morse.hpp	(revision 0496af770fd03f6a308156b13e9d19fb5e12e600)
@@ -20,4 +20,5 @@
 
 #include "Potentials/EmpiricalPotential.hpp"
+#include "Potentials/SerializablePotential.hpp"
 #include "FunctionApproximation/FunctionModel.hpp"
 
@@ -27,5 +28,8 @@
  *
  */
-class PairPotential_Morse : virtual public EmpiricalPotential, virtual public FunctionModel
+class PairPotential_Morse :
+  virtual public EmpiricalPotential,
+  virtual public FunctionModel,
+  virtual public SerializablePotential
 {
   //!> grant unit test access to internal parts
@@ -38,6 +42,7 @@
   typedef FunctionModel::parameters_t parameters_t;
 public:
-  PairPotential_Morse();
+  PairPotential_Morse(const ParticleTypes_t &_ParticleTypes);
   PairPotential_Morse(
+      const ParticleTypes_t &_ParticleTypes,
       const double _spring_constant,
       const double _equilibrium_distance,
@@ -98,7 +103,15 @@
    * \return token name of the potential
    */
-  const std::string getToken() const {
-    return std::string("morse");
-  }
+  const std::string& getToken() const
+  { return potential_token; }
+
+  /** Returns a vector of parameter names.
+   *
+   * This is required from the specific implementation
+   *
+   * \return vector of strings containing parameter names
+   */
+  const ParameterNames_t& getParameterNames() const
+  { return ParameterNames; }
 
   /** States whether lower and upper boundaries should be used to constraint
@@ -142,4 +155,10 @@
   //!> parameter vector with parameters as in enum parameter_enum_t
   parameters_t params;
+
+  //!> static definitions of the parameter name for this potential
+  static const ParameterNames_t ParameterNames;
+
+  //!> static token of this potential type
+  static const std::string potential_token;
 };
 
Index: src/Potentials/Specifics/SaturationPotential.cpp
===================================================================
--- src/Potentials/Specifics/SaturationPotential.cpp	(revision 6efcaec4b6119396e4609fd8ec76dda69a50c32f)
+++ src/Potentials/Specifics/SaturationPotential.cpp	(revision 0496af770fd03f6a308156b13e9d19fb5e12e600)
@@ -39,4 +39,8 @@
 #include "SaturationPotential.hpp"
 
+#include <boost/assign/list_of.hpp> // for 'map_list_of()'
+#include <iostream>
+#include <string>
+
 #include "CodePatterns/Assert.hpp"
 #include "CodePatterns/Log.hpp"
@@ -44,7 +48,24 @@
 #include "Potentials/helpers.hpp"
 
+// static definitions
+const SaturationPotential::ParameterNames_t
+SaturationPotential::ParameterNames =
+      boost::assign::list_of<std::string>
+      ("all_energy_offset")
+      ("")
+      ("")
+      ("")
+      ("")
+      ("")
+    ;
+const std::string SaturationPotential::potential_token("saturation");
+
 SaturationPotential::SaturationPotential(
+    const ParticleTypes_t &_ParticleTypes,
     const double _saturation_cutoff,
     boost::function< std::vector<arguments_t>(const argument_t &, const double)> &_triplefunction) :
+  SerializablePotential(_ParticleTypes),
+  morse(_ParticleTypes),
+  angle(_ParticleTypes),
   energy_offset(0.),
   triplefunction(_triplefunction),
@@ -53,4 +74,5 @@
 
 SaturationPotential::SaturationPotential(
+    const ParticleTypes_t &_ParticleTypes,
     const double _morse_spring_constant,
     const double _morse_equilibrium_distance,
@@ -61,4 +83,7 @@
     const double _saturation_cutoff,
     boost::function< std::vector<arguments_t>(const argument_t &, const double)> &_triplefunction) :
+  SerializablePotential(_ParticleTypes),
+  morse(_ParticleTypes),
+  angle(_ParticleTypes),
   energy_offset(_all_energy_offset),
   triplefunction(_triplefunction),
@@ -262,2 +287,16 @@
   return SaturationPotential::results_t(1, result);
 }
+
+std::ostream& operator<<(std::ostream &ost, const SaturationPotential &potential)
+{
+  ost << potential.morse;
+  ost << potential.angle;
+  return ost;
+}
+
+std::istream& operator>>(std::istream &ist, SaturationPotential &potential)
+{
+  ist >> potential.morse;
+  ist >> potential.angle;
+  return ist;
+}
Index: src/Potentials/Specifics/SaturationPotential.hpp
===================================================================
--- src/Potentials/Specifics/SaturationPotential.hpp	(revision 6efcaec4b6119396e4609fd8ec76dda69a50c32f)
+++ src/Potentials/Specifics/SaturationPotential.hpp	(revision 0496af770fd03f6a308156b13e9d19fb5e12e600)
@@ -16,7 +16,9 @@
 
 #include <boost/function.hpp>
+#include <iosfwd>
 #include <limits>
 
 #include "Potentials/EmpiricalPotential.hpp"
+#include "Potentials/SerializablePotential.hpp"
 #include "Potentials/Specifics/PairPotential_Angle.hpp"
 #include "Potentials/Specifics/PairPotential_Morse.hpp"
@@ -26,8 +28,16 @@
  *
  */
-class SaturationPotential : virtual public EmpiricalPotential, virtual public FunctionModel
+class SaturationPotential :
+  virtual public EmpiricalPotential,
+  virtual public FunctionModel,
+  virtual public SerializablePotential
 {
   //!> grant unit test access to internal parts
   friend class SaturationPotentialTest;
+  //!> grant operator access to private functions
+  friend std::ostream& operator<<(std::ostream &ost, const SaturationPotential &potential);
+  //!> grant operator access to private functions
+  friend std::istream& operator>>(std::istream &ost, SaturationPotential &potential);
+
   // some repeated typedefs to avoid ambiguities
   typedef FunctionModel::arguments_t arguments_t;
@@ -38,8 +48,10 @@
 public:
   SaturationPotential(
+      const ParticleTypes_t &_ParticleTypes,
       const double _saturation_cutoff,
       boost::function< std::vector<arguments_t>(const argument_t &, const double)> &_triplefunction
       );
   SaturationPotential(
+      const ParticleTypes_t &_ParticleTypes,
       const double _morse_spring_constant,
       const double _morse_equilibrium_distance,
@@ -100,7 +112,15 @@
    * \return token name of the potential
    */
-  const std::string getToken() const {
-    return std::string("saturation");
-  }
+  const std::string& getToken() const
+  { return potential_token; }
+
+  /** Returns a vector of parameter names.
+   *
+   * This is required from the specific implementation
+   *
+   * \return vector of strings containing parameter names
+   */
+  const ParameterNames_t& getParameterNames() const
+  { return ParameterNames; }
 
   /** States whether lower and upper boundaries should be used to constraint
@@ -154,5 +174,35 @@
   const boost::function< std::vector< arguments_t >(const argument_t &, const double)> &triplefunction;
   const double saturation_cutoff;
+
+  //!> static definitions of the parameter name for this potential
+  static const ParameterNames_t ParameterNames;
+
+  //!> static token of this potential type
+  static const std::string potential_token;
 };
 
+/** Output operations stores .potentials line containing these parameters
+ * coefficients and designations.
+ *
+ * \note We have to overrride this function in order to print both potentials
+ * separately.
+ *
+ * \param ost output stream to print to
+ * \param potential potential whose coefficients to print
+ * \return output stream for concatenation
+ */
+std::ostream& operator<<(std::ostream &ost, const SaturationPotential &potential);
+
+/** Input operation parses coefficients from a given line of a .potentials
+ * file.
+ *
+ * \note We have to override this function in order to parse both potentials
+ * separately.
+ *
+ * \param ist input stream to parse from
+ * \param potential potential to set
+ * \return input stream for concatenation
+ */
+std::istream& operator>>(std::istream &ist, SaturationPotential &potential);
+
 #endif /* SATURATIONPOTENTIAL_HPP_ */
Index: src/Potentials/Specifics/unittests/ManyBodyPotential_TersoffUnitTest.cpp
===================================================================
--- src/Potentials/Specifics/unittests/ManyBodyPotential_TersoffUnitTest.cpp	(revision 6efcaec4b6119396e4609fd8ec76dda69a50c32f)
+++ src/Potentials/Specifics/unittests/ManyBodyPotential_TersoffUnitTest.cpp	(revision 0496af770fd03f6a308156b13e9d19fb5e12e600)
@@ -277,5 +277,9 @@
     > fct =
       triplefunction;
-  ManyBodyPotential_Tersoff tersoff(fct);
+  ManyBodyPotential_Tersoff::ParticleTypes_t types =
+      boost::assign::list_of<ManyBodyPotential_Tersoff::ParticleType_t>
+        (0)(1)
+      ;
+  ManyBodyPotential_Tersoff tersoff(types, fct);
   tersoff.setParameters(params);
   const_cast<double &>(tersoff.R) = 1.8;
@@ -320,5 +324,9 @@
 //    > fct =
 //      triplefunction;
-//  ManyBodyPotential_Tersoff tersoff(fct);
+//  ManyBodyPotential_Tersoff::ParticleTypes_t types =
+//      boost::assign::list_of<ManyBodyPotential_Tersoff::ParticleType_t>
+//        (0)(1)
+//      ;
+//  ManyBodyPotential_Tersoff tersoff(types, fct);
 //  tersoff.setParameters(params);
 //  CPPUNIT_ASSERT(
@@ -341,5 +349,9 @@
 //    > fct =
 //      triplefunction;
-//  ManyBodyPotential_Tersoff tersoff(fct);
+//  ManyBodyPotential_Tersoff::ParticleTypes_t types =
+//      boost::assign::list_of<ManyBodyPotential_Tersoff::ParticleType_t>
+//        (0)(1)
+//      ;
+//  ManyBodyPotential_Tersoff tersoff(types, fct);
 //  tersoff.setParameters(params);
 //  CPPUNIT_ASSERT(
Index: src/Potentials/Specifics/unittests/PairPotential_AngleUnitTest.cpp
===================================================================
--- src/Potentials/Specifics/unittests/PairPotential_AngleUnitTest.cpp	(revision 6efcaec4b6119396e4609fd8ec76dda69a50c32f)
+++ src/Potentials/Specifics/unittests/PairPotential_AngleUnitTest.cpp	(revision 0496af770fd03f6a308156b13e9d19fb5e12e600)
@@ -103,5 +103,9 @@
 void PairPotential_AngleTest::operatorTest()
 {
-  PairPotential_Angle angle(.5,0.,.1);
+  PairPotential_Angle::ParticleTypes_t types =
+      boost::assign::list_of<PairPotential_Angle::ParticleType_t>
+        (0)(1)(1)
+      ;
+  PairPotential_Angle angle(types, .5,0.,.1);
   for (size_t index = 0; index < input.size(); ++index) {
     CPPUNIT_ASSERT(
@@ -118,5 +122,9 @@
 void PairPotential_AngleTest::derivativeTest()
 {
-  PairPotential_Angle angle(.5,0.,.1);
+  PairPotential_Angle::ParticleTypes_t types =
+      boost::assign::list_of<PairPotential_Angle::ParticleType_t>
+        (0)(1)(1)
+      ;
+  PairPotential_Angle angle(types, .5,0.,.1);
   CPPUNIT_ASSERT(
       Helpers::isEqual(
@@ -135,5 +143,9 @@
 void PairPotential_AngleTest::parameter_derivativeTest()
 {
-  PairPotential_Angle angle(.5,0.,.1);
+  PairPotential_Angle::ParticleTypes_t types =
+      boost::assign::list_of<PairPotential_Angle::ParticleType_t>
+        (0)(1)(1)
+      ;
+  PairPotential_Angle angle(types, .5,0.,.1);
   CPPUNIT_ASSERT(
       Helpers::isEqual(
Index: src/Potentials/Specifics/unittests/PairPotential_HarmonicUnitTest.cpp
===================================================================
--- src/Potentials/Specifics/unittests/PairPotential_HarmonicUnitTest.cpp	(revision 6efcaec4b6119396e4609fd8ec76dda69a50c32f)
+++ src/Potentials/Specifics/unittests/PairPotential_HarmonicUnitTest.cpp	(revision 0496af770fd03f6a308156b13e9d19fb5e12e600)
@@ -91,5 +91,9 @@
 void PairPotential_HarmonicTest::operatorTest()
 {
-  PairPotential_Harmonic harmonic(.5,1.,.1);
+  PairPotential_Harmonic::ParticleTypes_t types =
+      boost::assign::list_of<PairPotential_Harmonic::ParticleType_t>
+        (0)(1)
+      ;
+  PairPotential_Harmonic harmonic(types, .5,1.,.1);
   for (size_t index = 0; index < input.size(); ++index) {
     CPPUNIT_ASSERT(
@@ -106,5 +110,9 @@
 void PairPotential_HarmonicTest::derivativeTest()
 {
-  PairPotential_Harmonic harmonic(.5,1.,.1);
+  PairPotential_Harmonic::ParticleTypes_t types =
+      boost::assign::list_of<PairPotential_Harmonic::ParticleType_t>
+        (0)(1)
+      ;
+  PairPotential_Harmonic harmonic(types, .5,1.,.1);
   CPPUNIT_ASSERT(
       Helpers::isEqual(
@@ -122,5 +130,9 @@
 void PairPotential_HarmonicTest::parameter_derivativeTest()
 {
-  PairPotential_Harmonic harmonic(.5,1.,.1);
+  PairPotential_Harmonic::ParticleTypes_t types =
+      boost::assign::list_of<PairPotential_Harmonic::ParticleType_t>
+        (0)(1)
+      ;
+  PairPotential_Harmonic harmonic(types, .5,1.,.1);
   CPPUNIT_ASSERT(
       Helpers::isEqual(
Index: src/Potentials/Specifics/unittests/PairPotential_MorseUnitTest.cpp
===================================================================
--- src/Potentials/Specifics/unittests/PairPotential_MorseUnitTest.cpp	(revision 6efcaec4b6119396e4609fd8ec76dda69a50c32f)
+++ src/Potentials/Specifics/unittests/PairPotential_MorseUnitTest.cpp	(revision 0496af770fd03f6a308156b13e9d19fb5e12e600)
@@ -107,5 +107,9 @@
 void PairPotential_MorseTest::operatorTest()
 {
-  PairPotential_Morse Morse(a,c,D,d);
+  PairPotential_Morse::ParticleTypes_t types =
+      boost::assign::list_of<PairPotential_Morse::ParticleType_t>
+        (0)(1)
+      ;
+  PairPotential_Morse Morse(types, a,c,D,d);
   for (size_t index = 0; index < input.size(); ++index) {
     CPPUNIT_ASSERT(
@@ -123,5 +127,9 @@
 void PairPotential_MorseTest::derivativeTest()
 {
-  PairPotential_Morse Morse(a,c,D,d);
+  PairPotential_Morse::ParticleTypes_t types =
+      boost::assign::list_of<PairPotential_Morse::ParticleType_t>
+        (0)(1)
+      ;
+  PairPotential_Morse Morse(types, a,c,D,d);
   CPPUNIT_ASSERT(
       Helpers::isEqual(
@@ -140,5 +148,9 @@
 void PairPotential_MorseTest::parameter_derivativeTest()
 {
-  PairPotential_Morse Morse(a,c,D,d);
+  PairPotential_Morse::ParticleTypes_t types =
+      boost::assign::list_of<PairPotential_Morse::ParticleType_t>
+        (0)(1)
+      ;
+  PairPotential_Morse Morse(types, a,c,D,d);
   CPPUNIT_ASSERT(
       Helpers::isEqual(
