Index: src/Potentials/EmpiricalPotential.hpp
===================================================================
--- src/Potentials/EmpiricalPotential.hpp	(revision acc9b1ebaee95e62992bddb79f960cb80ecec896)
+++ src/Potentials/EmpiricalPotential.hpp	(revision 71388836b9daa739805b93ed613c1c1785657f34)
@@ -72,4 +72,15 @@
    */
   virtual derivative_components_t derivative(const arguments_t &arguments) const=0;
+
+protected:
+  /** Default constructor for class EmpiricalPotential.
+   *
+   * Callable only by derived functions.
+   *
+   */
+  EmpiricalPotential()
+  {}
+
+
 };
 
Index: src/Potentials/SerializablePotential.cpp
===================================================================
--- src/Potentials/SerializablePotential.cpp	(revision acc9b1ebaee95e62992bddb79f960cb80ecec896)
+++ src/Potentials/SerializablePotential.cpp	(revision 71388836b9daa739805b93ed613c1c1785657f34)
@@ -49,4 +49,8 @@
 
 #include "Potentials/Exceptions.hpp"
+
+SerializablePotential::SerializablePotential() :
+  ParticleTypes()
+{}
 
 std::ostream& operator<<(std::ostream &ost, const SerializablePotential &potential)
Index: src/Potentials/SerializablePotential.hpp
===================================================================
--- src/Potentials/SerializablePotential.hpp	(revision acc9b1ebaee95e62992bddb79f960cb80ecec896)
+++ src/Potentials/SerializablePotential.hpp	(revision 71388836b9daa739805b93ed613c1c1785657f34)
@@ -146,4 +146,12 @@
   }
 
+protected:
+  /** Default constructor for class EmpiricalPotential.
+   *
+   * Callable only by derived functions.
+   *
+   */
+  SerializablePotential();
+
 private:
 
Index: src/Potentials/Specifics/ConstantPotential.hpp
===================================================================
--- src/Potentials/Specifics/ConstantPotential.hpp	(revision acc9b1ebaee95e62992bddb79f960cb80ecec896)
+++ src/Potentials/Specifics/ConstantPotential.hpp	(revision 71388836b9daa739805b93ed613c1c1785657f34)
@@ -19,4 +19,5 @@
 #include "Potentials/EmpiricalPotential.hpp"
 
+class PotentialFactory;
 class TrainingData;
 
@@ -32,4 +33,6 @@
   //!> grant unit test access to internal parts
   friend class ConstantPotentialTest;
+  //!> grant PotentialFactory access to default cstor
+  friend class PotentialFactory;
   // some repeated typedefs to avoid ambiguities
   typedef FunctionModel::arguments_t arguments_t;
@@ -38,4 +41,12 @@
   typedef EmpiricalPotential::derivative_components_t derivative_components_t;
   typedef FunctionModel::parameters_t parameters_t;
+private:
+  /** Private default constructor.
+   *
+   * This prevents creation of potential without set ParticleTypes_t.
+   *
+   */
+  ConstantPotential() {}
+
 public:
   ConstantPotential(const ParticleTypes_t &_ParticleTypes);
Index: src/Potentials/Specifics/ManyBodyPotential_Tersoff.cpp
===================================================================
--- src/Potentials/Specifics/ManyBodyPotential_Tersoff.cpp	(revision acc9b1ebaee95e62992bddb79f960cb80ecec896)
+++ src/Potentials/Specifics/ManyBodyPotential_Tersoff.cpp	(revision 71388836b9daa739805b93ed613c1c1785657f34)
@@ -77,4 +77,15 @@
     ;
 const std::string ManyBodyPotential_Tersoff::potential_token("tersoff");
+
+ManyBodyPotential_Tersoff::ManyBodyPotential_Tersoff() :
+    EmpiricalPotential(),
+    R(3.2),
+    S(3.5),
+    lambda3(0.),
+    alpha(0.),
+    chi(1.),
+    omega(1.),
+    triplefunction(&Helpers::NoOp_Triplefunction)
+{}
 
 ManyBodyPotential_Tersoff::ManyBodyPotential_Tersoff(
Index: src/Potentials/Specifics/ManyBodyPotential_Tersoff.hpp
===================================================================
--- src/Potentials/Specifics/ManyBodyPotential_Tersoff.hpp	(revision acc9b1ebaee95e62992bddb79f960cb80ecec896)
+++ src/Potentials/Specifics/ManyBodyPotential_Tersoff.hpp	(revision 71388836b9daa739805b93ed613c1c1785657f34)
@@ -20,4 +20,5 @@
 #include "Potentials/EmpiricalPotential.hpp"
 
+class PotentialFactory;
 class TrainingData;
 
@@ -34,4 +35,6 @@
   //!> grant unit test access to internal parts
   friend class ManyBodyPotential_TersoffTest;
+  //!> grant PotentialFactory access to default cstor
+  friend class PotentialFactory;
   // some repeated typedefs to avoid ambiguities
   typedef FunctionModel::arguments_t arguments_t;
@@ -40,4 +43,12 @@
   typedef EmpiricalPotential::derivative_components_t derivative_components_t;
   typedef FunctionModel::parameters_t parameters_t;
+private:
+  /** Private default constructor.
+   *
+   * This prevents creation of potential without set ParticleTypes_t.
+   *
+   */
+  ManyBodyPotential_Tersoff();
+
 public:
   /** Constructor for class ManyBodyPotential_Tersoff.
@@ -185,12 +196,4 @@
   void setTriplefunction(triplefunction_t &_triplefunction)
   { triplefunction = _triplefunction;  }
-
-private:
-  /** Prohibit private default constructor.
-   *
-   * We essentially need the triplefunction, hence without this function cannot
-   * be.
-   */
-  ManyBodyPotential_Tersoff();
 
 private:
Index: src/Potentials/Specifics/PairPotential_Angle.hpp
===================================================================
--- src/Potentials/Specifics/PairPotential_Angle.hpp	(revision acc9b1ebaee95e62992bddb79f960cb80ecec896)
+++ src/Potentials/Specifics/PairPotential_Angle.hpp	(revision 71388836b9daa739805b93ed613c1c1785657f34)
@@ -19,4 +19,5 @@
 #include "Potentials/EmpiricalPotential.hpp"
 
+class PotentialFactory;
 class TrainingData;
 
@@ -31,4 +32,6 @@
   //!> grant unit test access to internal parts
   friend class PairPotential_AngleTest;
+  //!> grant PotentialFactory access to default cstor
+  friend class PotentialFactory;
   // some repeated typedefs to avoid ambiguities
   typedef FunctionModel::arguments_t arguments_t;
@@ -37,4 +40,12 @@
   typedef EmpiricalPotential::derivative_components_t derivative_components_t;
   typedef FunctionModel::parameters_t parameters_t;
+private:
+  /** Private default constructor.
+   *
+   * This prevents creation of potential without set ParticleTypes_t.
+   *
+   */
+  PairPotential_Angle() {}
+
 public:
   PairPotential_Angle(const ParticleTypes_t &_ParticleTypes);
Index: src/Potentials/Specifics/PairPotential_Harmonic.hpp
===================================================================
--- src/Potentials/Specifics/PairPotential_Harmonic.hpp	(revision acc9b1ebaee95e62992bddb79f960cb80ecec896)
+++ src/Potentials/Specifics/PairPotential_Harmonic.hpp	(revision 71388836b9daa739805b93ed613c1c1785657f34)
@@ -19,4 +19,5 @@
 #include "Potentials/EmpiricalPotential.hpp"
 
+class PotentialFactory;
 class TrainingData;
 
@@ -31,4 +32,6 @@
   //!> grant unit test access to internal parts
   friend class PairPotential_HarmonicTest;
+  //!> grant PotentialFactory access to default cstor
+  friend class PotentialFactory;
   // some repeated typedefs to avoid ambiguities
   typedef FunctionModel::arguments_t arguments_t;
@@ -37,4 +40,12 @@
   typedef EmpiricalPotential::derivative_components_t derivative_components_t;
   typedef FunctionModel::parameters_t parameters_t;
+private:
+  /** Private default constructor.
+   *
+   * This prevents creation of potential without set ParticleTypes_t.
+   *
+   */
+  PairPotential_Harmonic() {}
+
 public:
   PairPotential_Harmonic(const ParticleTypes_t &_ParticleTypes);
Index: src/Potentials/Specifics/PairPotential_Morse.hpp
===================================================================
--- src/Potentials/Specifics/PairPotential_Morse.hpp	(revision acc9b1ebaee95e62992bddb79f960cb80ecec896)
+++ src/Potentials/Specifics/PairPotential_Morse.hpp	(revision 71388836b9daa739805b93ed613c1c1785657f34)
@@ -19,4 +19,5 @@
 #include "Potentials/EmpiricalPotential.hpp"
 
+class PotentialFactory;
 class TrainingData;
 
@@ -31,4 +32,6 @@
   //!> grant unit test access to internal parts
   friend class PairPotential_MorseTest;
+  //!> grant PotentialFactory access to default cstor
+  friend class PotentialFactory;
   // some repeated typedefs to avoid ambiguities
   typedef FunctionModel::arguments_t arguments_t;
@@ -37,4 +40,12 @@
   typedef EmpiricalPotential::derivative_components_t derivative_components_t;
   typedef FunctionModel::parameters_t parameters_t;
+private:
+  /** Private default constructor.
+   *
+   * This prevents creation of potential without set ParticleTypes_t.
+   *
+   */
+  PairPotential_Morse() {}
+
 public:
   PairPotential_Morse(const ParticleTypes_t &_ParticleTypes);
