Index: src/Potentials/InternalCoordinates/Coordinator.hpp
===================================================================
--- src/Potentials/InternalCoordinates/Coordinator.hpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
+++ src/Potentials/InternalCoordinates/Coordinator.hpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
@@ -0,0 +1,27 @@
+/*
+ * Coordinator.hpp
+ *
+ *  Created on: 03.09.2013
+ *      Author: heber
+ */
+
+#ifndef COORDINATOR_HPP_
+#define COORDINATOR_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "FunctionApproximation/FunctionModel.hpp"
+
+/** This class is the interface for all functors converting
+ * a list of distances (arguments_t) into internal coordinates.
+ *
+ */
+struct Coordinator
+{
+  virtual double operator()(const FunctionModel::arguments_t &arguments) const=0;
+};
+
+#endif /* COORDINATOR_HPP_ */
Index: src/Potentials/InternalCoordinates/CoordinatorFactory.cpp
===================================================================
--- src/Potentials/InternalCoordinates/CoordinatorFactory.cpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
+++ src/Potentials/InternalCoordinates/CoordinatorFactory.cpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
@@ -0,0 +1,93 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2013 Frederik Heber. All rights reserved.
+ * Please see the COPYING file or "Copyright notice" in builder.cpp for details.
+ *
+ *
+ *   This file is part of MoleCuilder.
+ *
+ *    MoleCuilder is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation, either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    MoleCuilder is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with MoleCuilder.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * CoordinatorFactory.cpp
+ *
+ *  Created on: 03.09.2013
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include "CoordinatorFactory.hpp"
+#include "Fragmentation/Homology/HomologyGraph.hpp"
+//#include "Fragmentation/Homology/FragmentEdge.hpp"
+#include "Fragmentation/Homology/FragmentNode.hpp"
+
+#include "TwoBody_Length.hpp"
+#include "ThreeBody_Angle.hpp"
+#include "FourBody_ImproperAngle.hpp"
+#include "FourBody_TorsionAngle.hpp"
+
+CoordinatorFactory::CoordinatorFactory()
+{}
+
+CoordinatorFactory::~CoordinatorFactory()
+{}
+
+Coordinator::ptr CoordinatorFactory::create(HomologyGraph &graph) const
+{
+  // for the moment we always return the same coordinator type
+  Coordinator::ptr coordinator;
+  const HomologyGraph::nodes_t &nodes = graph.getNodes();
+  switch (nodes.size()) {
+  case 2:
+    coordinator.reset(new TwoBody_Length());
+    break;
+  case 3:
+    coordinator.reset(new ThreeBody_Angle());
+    break;
+  case 4:
+  {
+    // TODO: Here, we have to actually look at the graph and
+    // decide whether we have a torsion or improper configuration
+    // torsion is a single chain
+    // improper is all connected to one central atom, i.e. there
+    // is a FragmentNode with connected_edges == 3
+    bool tripleEdge = false;
+    for (HomologyGraph::nodes_t::const_iterator nodeiter = nodes.begin();
+        nodeiter != nodes.end();
+        ++nodeiter) {
+      if (nodeiter->connected_edges == 3)
+        tripleEdge = true;
+    }
+    if (!tripleEdge)
+      coordinator.reset(new FourBody_TorsionAngle());
+    else
+      coordinator.reset(new FourBody_ImproperAngle());
+    break;
+  }
+  default:
+    ASSERT( 0, "CoordinatorFactory::create() - I don't have a coordinator for "+
+        toString(fragment)+".");
+    break;
+  }
+
+  return coordinator;
+}
Index: src/Potentials/InternalCoordinates/FourBody_ImproperAngle.cpp
===================================================================
--- src/Potentials/InternalCoordinates/FourBody_ImproperAngle.cpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
+++ src/Potentials/InternalCoordinates/FourBody_ImproperAngle.cpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
@@ -0,0 +1,74 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2013 Frederik Heber. All rights reserved.
+ * Please see the COPYING file or "Copyright notice" in builder.cpp for details.
+ *
+ *
+ *   This file is part of MoleCuilder.
+ *
+ *    MoleCuilder is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation, either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    MoleCuilder is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with MoleCuilder.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * FourBody_ImproperAngle.cpp
+ *
+ *  Created on: 03.09.2013
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include "FourBody_ImproperAngle.hpp"
+
+#include <cmath>
+
+#include "CodePatterns/Assert.hpp"
+
+#include "Potentials/helpers.hpp"
+
+double FourBody_ImproperAngle::operator()(const FunctionModel::arguments_t &arguments) const
+{
+//    return FourBodyPotential_Torsion::function_theta(
+//        r_jk,
+//        r_ik,
+//        r_kl,
+//        r_ij,
+//        r_jl,
+//        r_il
+//        );
+  ASSERT( arguments.size() == 6,
+      "FourBody_ImproperAngle() - require exactly six arguments.");
+  const double &r_ij = arguments[3].distance; // 01
+  const double &r_ik = arguments[1].distance; // 02
+  const double &r_il = arguments[5].distance; // 03
+  const double &r_jk = arguments[0].distance; // 12
+  const double &r_jl = arguments[4].distance; // 13
+  const double &r_kl = arguments[2].distance; // 23
+  const double h_1 = .5*sqrt(2.*(Helpers::pow(r_ij,2)+Helpers::pow(r_ik,2))-Helpers::pow(r_jk,2));
+  const double h_2 = .5*sqrt(2.*(Helpers::pow(r_jl,2)+Helpers::pow(r_kl,2))-Helpers::pow(r_jk,2));
+  const double angle = Helpers::pow(h_1,2) + Helpers::pow(h_2,2) - Helpers::pow(r_il,2);
+  const double divisor = 2.* h_1 * h_2;
+
+//  LOG(2, "DEBUG: cos(theta)= " << angle/divisor);
+  if (divisor == 0.)
+    return 0.;
+  else
+    return angle/divisor;
+}
Index: src/Potentials/InternalCoordinates/FourBody_ImproperAngle.hpp
===================================================================
--- src/Potentials/InternalCoordinates/FourBody_ImproperAngle.hpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
+++ src/Potentials/InternalCoordinates/FourBody_ImproperAngle.hpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
@@ -0,0 +1,26 @@
+/*
+ * FourBody_ImproperAngle.hpp
+ *
+ *  Created on: 03.09.2013
+ *      Author: heber
+ */
+
+#ifndef FOURBODY_IMPROPERANGLE_HPP_
+#define FOURBODY_IMPROPERANGLE_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "Coordinator.hpp"
+
+/** This class implements the Coordinator interface for the
+ * conversion of an arguments_t list into an improper angle.
+ */
+struct FourBody_ImproperAngle : public Coordinator
+{
+  double operator()(const FunctionModel::arguments_t &arguments) const;
+};
+
+#endif /* FOURBODY_IMPROPERANGLE_HPP_ */
Index: src/Potentials/InternalCoordinates/FourBody_TorsionAngle.cpp
===================================================================
--- src/Potentials/InternalCoordinates/FourBody_TorsionAngle.cpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
+++ src/Potentials/InternalCoordinates/FourBody_TorsionAngle.cpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
@@ -0,0 +1,66 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2013 Frederik Heber. All rights reserved.
+ * Please see the COPYING file or "Copyright notice" in builder.cpp for details.
+ *
+ *
+ *   This file is part of MoleCuilder.
+ *
+ *    MoleCuilder is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation, either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    MoleCuilder is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with MoleCuilder.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * FourBody_TorsionAngle.cpp
+ *
+ *  Created on: 03.09.2013
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include "FourBody_TorsionAngle.hpp"
+
+#include "CodePatterns/Assert.hpp"
+
+#include <cmath>
+
+#include "Potentials/helpers.hpp"
+
+double FourBody_TorsionAngle::operator()(const FunctionModel::arguments_t &arguments) const
+{
+  ASSERT( arguments.size() == 6,
+      "FourBody_TorsionAngle() - require exactly six arguments.");
+  const double &r_ij = arguments[0].distance; // 01
+  const double &r_ik = arguments[1].distance; // 02
+  const double &r_il = arguments[2].distance; // 03
+  const double &r_jk = arguments[3].distance; // 12
+  const double &r_jl = arguments[4].distance; // 13
+  const double &r_kl = arguments[5].distance; // 23
+  const double h_1 = .5*sqrt(2.*(Helpers::pow(r_ij,2)+Helpers::pow(r_ik,2))-Helpers::pow(r_jk,2));
+  const double h_2 = .5*sqrt(2.*(Helpers::pow(r_jl,2)+Helpers::pow(r_kl,2))-Helpers::pow(r_jk,2));
+  const double angle = Helpers::pow(h_1,2) + Helpers::pow(h_2,2) - Helpers::pow(r_il,2);
+  const double divisor = 2.* h_1 * h_2;
+
+//  LOG(2, "DEBUG: cos(theta)= " << angle/divisor);
+  if (divisor == 0.)
+    return 0.;
+  else
+    return angle/divisor;
+}
Index: src/Potentials/InternalCoordinates/FourBody_TorsionAngle.hpp
===================================================================
--- src/Potentials/InternalCoordinates/FourBody_TorsionAngle.hpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
+++ src/Potentials/InternalCoordinates/FourBody_TorsionAngle.hpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
@@ -0,0 +1,26 @@
+/*
+ * FourBody_TorsionAngle.hpp
+ *
+ *  Created on: 03.09.2013
+ *      Author: heber
+ */
+
+#ifndef FOURBODY_TORSIONANGLE_HPP_
+#define FOURBODY_TORSIONANGLE_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "Coordinator.hpp"
+
+/** This class implements the Coordinator interface for the
+ * conversion of an arguments_t list into a torsional angle.
+ */
+struct FourBody_TorsionAngle : public Coordinator
+{
+  double operator()(const FunctionModel::arguments_t &arguments) const;
+};
+
+#endif /* FOURBODY_TORSIONANGLE_HPP_ */
Index: src/Potentials/InternalCoordinates/OneBody_Constant.cpp
===================================================================
--- src/Potentials/InternalCoordinates/OneBody_Constant.cpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
+++ src/Potentials/InternalCoordinates/OneBody_Constant.cpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
@@ -0,0 +1,47 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2013 Frederik Heber. All rights reserved.
+ * Please see the COPYING file or "Copyright notice" in builder.cpp for details.
+ *
+ *
+ *   This file is part of MoleCuilder.
+ *
+ *    MoleCuilder is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation, either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    MoleCuilder is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with MoleCuilder.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * OneBody_Constant.cpp
+ *
+ *  Created on: 03.09.2013
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include "OneBody_Constant.hpp"
+
+#include "CodePatterns/Assert.hpp"
+
+double OneBody_Constant::operator()(const FunctionModel::arguments_t &arguments) const
+{
+  ASSERT( arguments.size() == 0,
+      "OneBody_Constant() - we require exactly now arguments.");
+  return 0.;
+}
Index: src/Potentials/InternalCoordinates/OneBody_Constant.hpp
===================================================================
--- src/Potentials/InternalCoordinates/OneBody_Constant.hpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
+++ src/Potentials/InternalCoordinates/OneBody_Constant.hpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
@@ -0,0 +1,26 @@
+/*
+ * OneBody_Constant.hpp
+ *
+ *  Created on: 03.09.2013
+ *      Author: heber
+ */
+
+#ifndef ONEBODY_CONSTANT_HPP_
+#define ONEBODY_CONSTANT_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "Coordinator.hpp"
+
+/** This class implements the Coordinator interface for the
+ * conversion of an arguments_t list into zero.
+ */
+struct OneBody_Constant : public Coordinator
+{
+  double operator()(const FunctionModel::arguments_t &arguments) const;
+};
+
+#endif /* ONEBODY_CONSTANT_HPP_ */
Index: src/Potentials/InternalCoordinates/ThreeBody_Angle.cpp
===================================================================
--- src/Potentials/InternalCoordinates/ThreeBody_Angle.cpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
+++ src/Potentials/InternalCoordinates/ThreeBody_Angle.cpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
@@ -0,0 +1,59 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2013 Frederik Heber. All rights reserved.
+ * Please see the COPYING file or "Copyright notice" in builder.cpp for details.
+ *
+ *
+ *   This file is part of MoleCuilder.
+ *
+ *    MoleCuilder is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation, either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    MoleCuilder is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with MoleCuilder.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * ThreeBody_Angle.cpp
+ *
+ *  Created on: 03.09.2013
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include "ThreeBody_Angle.hpp"
+
+#include "CodePatterns/Assert.hpp"
+
+#include "Potentials/helpers.hpp"
+
+double ThreeBody_Angle::operator()(const FunctionModel::arguments_t &arguments) const
+{
+  ASSERT( arguments.size() == 3,
+      "ThreeBody_Angle() - require exactly three arguments.");
+  const double &r_ij = arguments[0].distance; // 01
+  const double &r_jk = arguments[2].distance; // 12
+  const double &r_ik = arguments[1].distance; // 02
+  const double angle = Helpers::pow(r_ij,2) + Helpers::pow(r_jk,2) - Helpers::pow(r_ik,2);
+  const double divisor = 2.* r_ij * r_jk;
+
+//  LOG(2, "DEBUG: cos(theta)= " << angle/divisor);
+  if (divisor == 0.)
+    return 0.;
+  else
+    return angle/divisor;
+}
Index: src/Potentials/InternalCoordinates/ThreeBody_Angle.hpp
===================================================================
--- src/Potentials/InternalCoordinates/ThreeBody_Angle.hpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
+++ src/Potentials/InternalCoordinates/ThreeBody_Angle.hpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
@@ -0,0 +1,26 @@
+/*
+ * ThreeBody_Angle.hpp
+ *
+ *  Created on: 03.09.2013
+ *      Author: heber
+ */
+
+#ifndef THREEBODY_ANGLE_HPP_
+#define THREEBODY_ANGLE_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "Coordinator.hpp"
+
+/** This class implements the Coordinator interface for the
+ * conversion of an arguments_t list into a single angle.
+ */
+struct ThreeBody_Angle : public Coordinator
+{
+  double operator()(const FunctionModel::arguments_t &arguments) const;
+};
+
+#endif /* THREEBODY_ANGLE_HPP_ */
Index: src/Potentials/InternalCoordinates/TwoBody_Length.cpp
===================================================================
--- src/Potentials/InternalCoordinates/TwoBody_Length.cpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
+++ src/Potentials/InternalCoordinates/TwoBody_Length.cpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
@@ -0,0 +1,48 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2013 Frederik Heber. All rights reserved.
+ * Please see the COPYING file or "Copyright notice" in builder.cpp for details.
+ *
+ *
+ *   This file is part of MoleCuilder.
+ *
+ *    MoleCuilder is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation, either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    MoleCuilder is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with MoleCuilder.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * TwoBody_Length.cpp
+ *
+ *  Created on: 03.09.2013
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include "TwoBody_Length.hpp"
+
+#include "CodePatterns/Assert.hpp"
+
+double TwoBody_Length::operator()(const FunctionModel::arguments_t &arguments) const
+{
+  ASSERT( arguments.size() == 1,
+      "TwoBody_Length() - require exactly one argument.");
+  const double &r_ij = arguments[0].distance; // 01
+  return r_ij;
+}
Index: src/Potentials/InternalCoordinates/TwoBody_Length.hpp
===================================================================
--- src/Potentials/InternalCoordinates/TwoBody_Length.hpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
+++ src/Potentials/InternalCoordinates/TwoBody_Length.hpp	(revision 291eca26ed6131cb07a91646a2f248745866d657)
@@ -0,0 +1,26 @@
+/*
+ * TwoBody_Length.hpp
+ *
+ *  Created on: 03.09.2013
+ *      Author: heber
+ */
+
+#ifndef TWOBODY_LENGTH_HPP_
+#define TWOBODY_LENGTH_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "Coordinator.hpp"
+
+/** This class implements the Coordinator interface for the
+ * conversion of an arguments_t list into a single distance.
+ */
+struct TwoBody_Length : public Coordinator
+{
+  double operator()(const FunctionModel::arguments_t &arguments) const;
+};
+
+#endif /* TWOBODY_LENGTH_HPP_ */
Index: src/Potentials/Makefile.am
===================================================================
--- src/Potentials/Makefile.am	(revision a8f5d94d574c2af4728a0591771b9b500bc3e6c9)
+++ src/Potentials/Makefile.am	(revision 291eca26ed6131cb07a91646a2f248745866d657)
@@ -13,4 +13,9 @@
   Potentials/PotentialSerializer.cpp \
   Potentials/SerializablePotential.cpp \
+  Potentials/InternalCoordinates/FourBody_ImproperAngle.cpp \
+  Potentials/InternalCoordinates/FourBody_TorsionAngle.cpp \
+  Potentials/InternalCoordinates/OneBody_Constant.cpp \
+  Potentials/InternalCoordinates/ThreeBody_Angle.cpp \
+  Potentials/InternalCoordinates/TwoBody_Length.cpp \
   Potentials/Specifics/ConstantPotential.cpp \
   Potentials/Specifics/FourBodyPotential_Improper.cpp \
@@ -28,4 +33,10 @@
   Potentials/Exceptions.hpp \
   Potentials/helpers.hpp \
+  Potentials/InternalCoordinates/Coordinator.hpp \
+  Potentials/InternalCoordinates/FourBody_ImproperAngle.hpp \
+  Potentials/InternalCoordinates/FourBody_TorsionAngle.hpp \
+  Potentials/InternalCoordinates/OneBody_Constant.hpp \
+  Potentials/InternalCoordinates/ThreeBody_Angle.hpp \
+  Potentials/InternalCoordinates/TwoBody_Length.hpp \
   Potentials/PartialNucleiChargeFitter.hpp \
   Potentials/ParticleTypeCheckers.hpp \
