Index: src/Potentials/Specifics/ConstantPotential.cpp
===================================================================
--- src/Potentials/Specifics/ConstantPotential.cpp	(revision f0025dc16b9694a6ef9ed71df894e00a0da74d0d)
+++ src/Potentials/Specifics/ConstantPotential.cpp	(revision 0f5d38e3ab5cb4ea3ef27e9a7fab1d2a07dc2437)
@@ -177,4 +177,12 @@
 }
 
+FunctionModel::filter_t ConstantPotential::getSpecificFilter() const
+{
+  FunctionModel::filter_t returnfunction =
+      boost::bind(&Helpers::NoOp_Filterfunction,
+          _1);
+  return returnfunction;
+}
+
 void
 ConstantPotential::setParametersToRandomInitialValues(
Index: src/Potentials/Specifics/ConstantPotential.hpp
===================================================================
--- src/Potentials/Specifics/ConstantPotential.hpp	(revision f0025dc16b9694a6ef9ed71df894e00a0da74d0d)
+++ src/Potentials/Specifics/ConstantPotential.hpp	(revision 0f5d38e3ab5cb4ea3ef27e9a7fab1d2a07dc2437)
@@ -163,4 +163,18 @@
   FunctionModel::extractor_t getSpecificExtractor() const;
 
+  /** Returns a bound function to be used with TrainingData, extracting distances
+   * from a Fragment.
+   *
+   * \return bound function extracting distances from a fragment
+   */
+  FunctionModel::filter_t getSpecificFilter() const;
+
+  /** Returns the number of arguments the underlying function requires.
+   *
+   * \return number of arguments of the function
+   */
+  size_t getSpecificArgumentCount() const
+  { return 0; }
+
   enum parameter_enum_t {
     energy_offset=0,
Index: src/Potentials/Specifics/ManyBodyPotential_Tersoff.cpp
===================================================================
--- src/Potentials/Specifics/ManyBodyPotential_Tersoff.cpp	(revision f0025dc16b9694a6ef9ed71df894e00a0da74d0d)
+++ src/Potentials/Specifics/ManyBodyPotential_Tersoff.cpp	(revision 0f5d38e3ab5cb4ea3ef27e9a7fab1d2a07dc2437)
@@ -698,4 +698,12 @@
 }
 
+FunctionModel::filter_t ManyBodyPotential_Tersoff::getSpecificFilter() const
+{
+  FunctionModel::filter_t returnfunction =
+      boost::bind(&Helpers::NoOp_Filterfunction,
+          _1);
+  return returnfunction;
+}
+
 void
 ManyBodyPotential_Tersoff::setParametersToRandomInitialValues(
Index: src/Potentials/Specifics/ManyBodyPotential_Tersoff.hpp
===================================================================
--- src/Potentials/Specifics/ManyBodyPotential_Tersoff.hpp	(revision f0025dc16b9694a6ef9ed71df894e00a0da74d0d)
+++ src/Potentials/Specifics/ManyBodyPotential_Tersoff.hpp	(revision 0f5d38e3ab5cb4ea3ef27e9a7fab1d2a07dc2437)
@@ -188,4 +188,18 @@
   FunctionModel::extractor_t getSpecificExtractor() const;
 
+  /** Returns a bound function to be used with TrainingData, extracting distances
+   * from a Fragment.
+   *
+   * \return bound function extracting distances from a fragment
+   */
+  FunctionModel::filter_t getSpecificFilter() const;
+
+  /** Returns the number of arguments the underlying function requires.
+   *
+   * \return number of arguments of the function
+   */
+  size_t getSpecificArgumentCount() const
+  { return 1; }
+
   /** Sets the magic triple function that we use for getting angle distances.
    *
Index: src/Potentials/Specifics/PairPotential_Angle.cpp
===================================================================
--- src/Potentials/Specifics/PairPotential_Angle.cpp	(revision f0025dc16b9694a6ef9ed71df894e00a0da74d0d)
+++ src/Potentials/Specifics/PairPotential_Angle.cpp	(revision 0f5d38e3ab5cb4ea3ef27e9a7fab1d2a07dc2437)
@@ -221,4 +221,14 @@
 }
 
+FunctionModel::filter_t PairPotential_Angle::getSpecificFilter() const
+{
+  FunctionModel::filter_t returnfunction =
+      boost::bind(&Extractors::reorderArgumentsByParticleTypes,
+          _1,
+          getParticleTypes()
+      );
+  return returnfunction;
+}
+
 void
 PairPotential_Angle::setParametersToRandomInitialValues(
Index: src/Potentials/Specifics/PairPotential_Angle.hpp
===================================================================
--- src/Potentials/Specifics/PairPotential_Angle.hpp	(revision f0025dc16b9694a6ef9ed71df894e00a0da74d0d)
+++ src/Potentials/Specifics/PairPotential_Angle.hpp	(revision 0f5d38e3ab5cb4ea3ef27e9a7fab1d2a07dc2437)
@@ -166,4 +166,18 @@
   FunctionModel::extractor_t getSpecificExtractor() const;
 
+  /** Returns a bound function to be used with TrainingData, extracting distances
+   * from a Fragment.
+   *
+   * \return bound function extracting distances from a fragment
+   */
+  FunctionModel::filter_t getSpecificFilter() const;
+
+  /** Returns the number of arguments the underlying function requires.
+   *
+   * \return number of arguments of the function
+   */
+  size_t getSpecificArgumentCount() const
+  { return 3; }
+
   enum parameter_enum_t {
     spring_constant=0,
Index: src/Potentials/Specifics/PairPotential_Harmonic.cpp
===================================================================
--- src/Potentials/Specifics/PairPotential_Harmonic.cpp	(revision f0025dc16b9694a6ef9ed71df894e00a0da74d0d)
+++ src/Potentials/Specifics/PairPotential_Harmonic.cpp	(revision 0f5d38e3ab5cb4ea3ef27e9a7fab1d2a07dc2437)
@@ -198,4 +198,12 @@
 }
 
+FunctionModel::filter_t PairPotential_Harmonic::getSpecificFilter() const
+{
+  FunctionModel::filter_t returnfunction =
+      boost::bind(&Helpers::NoOp_Filterfunction,
+          _1);
+  return returnfunction;
+}
+
 void
 PairPotential_Harmonic::setParametersToRandomInitialValues(
Index: src/Potentials/Specifics/PairPotential_Harmonic.hpp
===================================================================
--- src/Potentials/Specifics/PairPotential_Harmonic.hpp	(revision f0025dc16b9694a6ef9ed71df894e00a0da74d0d)
+++ src/Potentials/Specifics/PairPotential_Harmonic.hpp	(revision 0f5d38e3ab5cb4ea3ef27e9a7fab1d2a07dc2437)
@@ -148,4 +148,18 @@
   FunctionModel::extractor_t getSpecificExtractor() const;
 
+  /** Returns a bound function to be used with TrainingData, extracting distances
+   * from a Fragment.
+   *
+   * \return bound function extracting distances from a fragment
+   */
+  FunctionModel::filter_t getSpecificFilter() const;
+
+  /** Returns the number of arguments the underlying function requires.
+   *
+   * \return number of arguments of the function
+   */
+  size_t getSpecificArgumentCount() const
+  { return 1; }
+
   /** Return the token name of this specific potential.
    *
Index: src/Potentials/Specifics/PairPotential_Morse.cpp
===================================================================
--- src/Potentials/Specifics/PairPotential_Morse.cpp	(revision f0025dc16b9694a6ef9ed71df894e00a0da74d0d)
+++ src/Potentials/Specifics/PairPotential_Morse.cpp	(revision 0f5d38e3ab5cb4ea3ef27e9a7fab1d2a07dc2437)
@@ -227,4 +227,12 @@
 }
 
+FunctionModel::filter_t PairPotential_Morse::getSpecificFilter() const
+{
+  FunctionModel::filter_t returnfunction =
+      boost::bind(&Helpers::NoOp_Filterfunction,
+          _1);
+  return returnfunction;
+}
+
 void
 PairPotential_Morse::setParametersToRandomInitialValues(
Index: src/Potentials/Specifics/PairPotential_Morse.hpp
===================================================================
--- src/Potentials/Specifics/PairPotential_Morse.hpp	(revision f0025dc16b9694a6ef9ed71df894e00a0da74d0d)
+++ src/Potentials/Specifics/PairPotential_Morse.hpp	(revision 0f5d38e3ab5cb4ea3ef27e9a7fab1d2a07dc2437)
@@ -165,4 +165,18 @@
   FunctionModel::extractor_t getSpecificExtractor() const;
 
+  /** Returns a bound function to be used with TrainingData, extracting distances
+   * from a Fragment.
+   *
+   * \return bound function extracting distances from a fragment
+   */
+  FunctionModel::filter_t getSpecificFilter() const;
+
+  /** Returns the number of arguments the underlying function requires.
+   *
+   * \return number of arguments of the function
+   */
+  size_t getSpecificArgumentCount() const
+  { return 1; }
+
   enum parameter_enum_t {
     spring_constant=0,
