Index: src/Actions/FragmentationAction/FragmentationAutomationAction.cpp
===================================================================
--- src/Actions/FragmentationAction/FragmentationAutomationAction.cpp	(revision e72c61273d7fd87405519a8e0373d653e9c2d1a6)
+++ src/Actions/FragmentationAction/FragmentationAutomationAction.cpp	(revision c6ca23fe871942ffe00849bb181ca2fe88d7bc94)
@@ -57,5 +57,5 @@
 #include "Fragmentation/KeySet.hpp"
 #include "Fragmentation/KeySetsContainer.hpp"
-#include "Fragmentation/Summation/printSum.hpp"
+#include "Fragmentation/Summation/printOrthogonalSum.hpp"
 #include "Graph/DepthFirstSearchAnalysis.hpp"
 #include "Jobs/MPQCJob.hpp"
@@ -386,5 +386,5 @@
     // sum up and print energies
     boost::mpl::for_each<MPQCDataEnergyVector_t>(
-        printSum<MPQCDataEnergyMap_t>(
+        printOrthogonalSum<MPQCDataEnergyMap_t>(
             subsetmap,
             MPQCData_Energy_fused,
@@ -396,5 +396,5 @@
     // sum up and print forces
     boost::mpl::for_each<MPQCDataForceVector_t>(
-        printSum<MPQCDataForceMap_t>(
+        printOrthogonalSum<MPQCDataForceMap_t>(
             subsetmap,
             MPQCData_Force_fused,
@@ -406,5 +406,5 @@
     // sum up and print grids
     boost::mpl::for_each<MPQCDataGridVector_t>(
-        printSum<MPQCDataGridMap_t>(
+        printOrthogonalSum<MPQCDataGridMap_t>(
             subsetmap,
             MPQCData_Grid_fused,
@@ -417,5 +417,5 @@
 //    // sum up and print times
 //    boost::mpl::for_each<MPQCDataTimeVector_t>(
-//        printSum<MPQCDataTimeMap_t>(
+//        printOrthogonalSum<MPQCDataTimeMap_t>(
 //            subsetmap,
 //            MPQCData_Time_fused,
Index: src/Fragmentation/Summation/Makefile.am
===================================================================
--- src/Fragmentation/Summation/Makefile.am	(revision e72c61273d7fd87405519a8e0373d653e9c2d1a6)
+++ src/Fragmentation/Summation/Makefile.am	(revision c6ca23fe871942ffe00849bb181ca2fe88d7bc94)
@@ -11,11 +11,11 @@
 	Fragmentation/Summation/OrthogonalSummation.hpp \
 	Fragmentation/Summation/OrthogonalSummation_impl.hpp \
+	Fragmentation/Summation/OrthogonalSummator.hpp \
 	Fragmentation/Summation/printKeyNames.hpp \
-	Fragmentation/Summation/printSum.hpp \
+	Fragmentation/Summation/printOrthogonalSum.hpp \
 	Fragmentation/Summation/SetValue.hpp \
 	Fragmentation/Summation/SetValueMap.hpp \
 	Fragmentation/Summation/SortedVector.hpp \
-	Fragmentation/Summation/SubsetMap.hpp \
-	Fragmentation/Summation/Summator.hpp
+	Fragmentation/Summation/SubsetMap.hpp
 
 
Index: src/Fragmentation/Summation/OrthogonalSummation.hpp
===================================================================
--- src/Fragmentation/Summation/OrthogonalSummation.hpp	(revision e72c61273d7fd87405519a8e0373d653e9c2d1a6)
+++ src/Fragmentation/Summation/OrthogonalSummation.hpp	(revision c6ca23fe871942ffe00849bb181ca2fe88d7bc94)
@@ -25,5 +25,5 @@
  *
  *  For the given class we require the following functions:
- *  -# operator=(): assigment operator for placement in vector
+ *  -# operator=(): assignment operator for placement in vector
  *  -# operator+=(): addition operator for adding one instance from another
  *  -# operator-=(): subtraction operator for subtracting one instance from another
Index: src/Fragmentation/Summation/OrthogonalSummator.hpp
===================================================================
--- src/Fragmentation/Summation/OrthogonalSummator.hpp	(revision c6ca23fe871942ffe00849bb181ca2fe88d7bc94)
+++ src/Fragmentation/Summation/OrthogonalSummator.hpp	(revision c6ca23fe871942ffe00849bb181ca2fe88d7bc94)
@@ -0,0 +1,131 @@
+/*
+ * OrthogonalSummator.hpp
+ *
+ *  Created on: 28.07.2012
+ *      Author: heber
+ */
+
+#ifndef ORTHOGONALSUMMATOR_HPP_
+#define ORTHOGONALSUMMATOR_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <boost/fusion/sequence.hpp>
+
+#include "Fragmentation/Summation/OrthogonalSummation.hpp"
+#include "Fragmentation/Summation/SetValue.hpp"
+#include "Jobs/MPQCDataMap.hpp"
+
+/** OrthogonalSummator is a general class for making us of OrthogonalSummation.
+ *
+ * The idea is that we want to sum up not only one value but a whole bunch of.
+ * However, in general the types of the values will all differ. We would like
+ * to call the summation in a as simple a fashion as possible and at best in
+ * a kind of for_each on each type/value.
+ * For this purpose we require a list of all the types, represented  by the
+ * MPQCDataMap_t map that uses the types enumerated in namespace MPQCDataFused,
+ * see the simple example for the associative sequence in boost::fusion.
+ * The MPQCDataMap_t then gives the essential mapping from the type to a specific
+ * key. Via this key, which is a type and hence can be used for template
+ * specification, we may gather all information for launching the
+ * OrthogonalSummation. We only need to convert MPQCData into the above
+ * MPQCDataMap_t instance and may then access the member variables via the above
+ * key and also obtain the type at \b run-time through the key.
+ *
+ * Note that we then need a conversion from the type stored in the MPQCData,
+ * e.g. a vector<double>, to the type in MPQCDataMap_t, e.g. Histogram.
+ *
+ * Boost::fusion is very cool! If we have a namespace with just structs as keys
+ * and the fusion::map from these keys to the true types, then we may do ...
+ * \code
+ *   MPQCDataMap_t MPQCDataMap;
+ *   using namespace MPQCDataFused;
+ *   double MPQCData_energy_total = boost::fusion::at_key<MPQCDataFused::energy_total>(MPQCDataMap);
+ * \endcode
+ * i.e. at_key knows the correct type!
+ *
+ */
+template <typename MapType, typename MapKey>
+struct OrthogonalSummator {
+  /** We retrieve the type of the MPQCData member variable from the
+   * boost::fusion::map and stored it in this typedef. Note that for
+   * internal types (e.g. MapValue::const_iterator we need to place
+   * \b typename before).
+   */
+  typedef typename boost::fusion::result_of::value_at_key<MapType, MapKey>::type MapValue;
+
+  /** Constructor for class OrthogonalSummator.
+   *
+   * \param _subsetmap map with hierarchy of IndexSet's
+   * \param _data MPQCData converted to MPQCDataMap_t type
+   * \param _jobids job ids to sum data in correct order
+   * \param _container container of IndexSet's such that each set has correct order
+   *        to job id and hence to _data.
+   * \param _MatrixNrLookup lookup from job id to ordering in above vectors
+   */
+  OrthogonalSummator(
+      SubsetMap::ptr &_subsetmap,
+      const std::vector<MapType> &_data,
+      const std::vector<JobId_t> &_jobids,
+      const IndexSetContainer::Container_t &_container,
+      std::map< JobId_t, size_t > &_MatrixNrLookup) : /* cannot make this const due to operator[] */
+    subsetmap(_subsetmap),
+    data(_data),
+    jobids(_jobids),
+    container(_container),
+    MatrixNrLookup(_MatrixNrLookup)
+  {
+    ASSERT( data.size() == jobids.size(),
+        "OrthogonalSummator() - data and ids don't have same size.");
+    ASSERT( jobids.size() == MatrixNrLookup.size(),
+        "OrthogonalSummator() - ids and MatrixNrLookup don't have same size.");
+  }
+
+  /** Summation operator.
+   *
+   * Initialises instantiated OrthogonalSummation of the respective type via
+   * \a OrthogonalSummator::data, uses OrthogonalSummation::operator() to sum and returns
+   * the result.
+   *
+   * \return result of OrthogonalSummation for given type from MPQCDataMap_t.
+   */
+  MapValue operator()()
+  {
+    // if we just have one indexset, we don't need to get rid of the "union index set"
+    typename OrthogonalSummation<MapValue>::InputSets_t indices(
+        container.begin(),
+        container.end()-1 == container.begin() ? container.end() : container.end()-1);
+    typename OrthogonalSummation<MapValue>::InputValues_t values(
+        container.size() == 1 ? (size_t)1 : container.size()-1);
+    typename std::vector<MapType>::const_iterator dataiter = data.begin();
+    std::vector<size_t>::const_iterator iditer = jobids.begin();
+    for (; dataiter != data.end(); ++dataiter, ++iditer) {
+      const MapType &Data = *dataiter;
+      const MapValue &value = boost::fusion::at_key<MapKey>(Data);
+      values[ MatrixNrLookup[*iditer] ] = value;
+    }
+
+    // create the summation functor and evaluate
+    OrthogonalSummation<MapValue> OS(indices, values, subsetmap);
+    const MapValue result = OS();
+    return result;
+  }
+
+private:
+  //!> Hierarchy of IndexSet's
+  SubsetMap::ptr &subsetmap;
+  //!> vector of data converted from MPQCData
+  const std::vector<MapType> &data;
+  //!> vector of jobids
+  const std::vector<JobId_t> &jobids;
+  //!> container with all IndexSet's
+  const IndexSetContainer::Container_t &container;
+  //!> lookup map from job ids to ordering in above vectors
+  std::map< JobId_t, size_t > MatrixNrLookup;
+};
+
+
+#endif /* ORTHOGONALSUMMATOR_HPP_ */
Index: src/Fragmentation/Summation/Summator.hpp
===================================================================
--- src/Fragmentation/Summation/Summator.hpp	(revision e72c61273d7fd87405519a8e0373d653e9c2d1a6)
+++ 	(revision )
@@ -1,131 +1,0 @@
-/*
- * Summator.hpp
- *
- *  Created on: 28.07.2012
- *      Author: heber
- */
-
-#ifndef SUMMATOR_HPP_
-#define SUMMATOR_HPP_
-
-// include config.h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <boost/fusion/sequence.hpp>
-
-#include "Fragmentation/Summation/OrthogonalSummation.hpp"
-#include "Fragmentation/Summation/SetValue.hpp"
-#include "Jobs/MPQCDataMap.hpp"
-
-/** Summator is a general class for making us of OrthogonalSummation.
- *
- * The idea is that we want to sum up not only one value but a whole bunch of.
- * However, in general the types of the values will all differ. We would like
- * to call the summation in a as simple a fashion as possible and at best in
- * a kind of for_each on each type/value.
- * For this purpose we require a list of all the types, represented  by the
- * MPQCDataMap_t map that uses the types enumerated in namespace MPQCDataFused,
- * see the simple example for the associative sequence in boost::fusion.
- * The MPQCDataMap_t then gives the essential mapping from the type to a specific
- * key. Via this key, which is a type and hence can be used for template
- * specification, we may gather all information for launching the
- * OrthogonalSummation. We only need to convert MPQCData into the above
- * MPQCDataMap_t instance and may then access the member variables via the above
- * key and also obtain the type at \b run-time through the key.
- *
- * Note that we then need a conversion from the type stored in the MPQCData,
- * e.g. a vector<double>, to the type in MPQCDataMap_t, e.g. Histogram.
- *
- * Boost::fusion is very cool! If we have a namespace with just structs as keys
- * and the fusion::map from these keys to the true types, then we may do ...
- * \code
- *   MPQCDataMap_t MPQCDataMap;
- *   using namespace MPQCDataFused;
- *   double MPQCData_energy_total = boost::fusion::at_key<MPQCDataFused::energy_total>(MPQCDataMap);
- * \endcode
- * i.e. at_key knows the correct type!
- *
- */
-template <typename MapType, typename MapKey>
-struct Summator {
-  /** We retrieve the type of the MPQCData member variable from the
-   * boost::fusion::map and stored it in this typedef. Note that for
-   * internal types (e.g. MapValue::const_iterator we need to place
-   * \b typename before).
-   */
-  typedef typename boost::fusion::result_of::value_at_key<MapType, MapKey>::type MapValue;
-
-  /** Constructor for class Summator.
-   *
-   * \param _subsetmap map with hierarchy of IndexSet's
-   * \param _data MPQCData converted to MPQCDataMap_t type
-   * \param _jobids job ids to sum data in correct order
-   * \param _container container of IndexSet's such that each set has correct order
-   *        to job id and hence to _data.
-   * \param _MatrixNrLookup lookup from job id to ordering in above vectors
-   */
-  Summator(
-      SubsetMap::ptr &_subsetmap,
-      const std::vector<MapType> &_data,
-      const std::vector<JobId_t> &_jobids,
-      const IndexSetContainer::Container_t &_container,
-      std::map< JobId_t, size_t > &_MatrixNrLookup) : /* cannot make this const due to operator[] */
-    subsetmap(_subsetmap),
-    data(_data),
-    jobids(_jobids),
-    container(_container),
-    MatrixNrLookup(_MatrixNrLookup)
-  {
-    ASSERT( data.size() == jobids.size(),
-        "Summator() - data and ids don't have same size.");
-    ASSERT( jobids.size() == MatrixNrLookup.size(),
-        "Summator() - ids and MatrixNrLookup don't have same size.");
-  }
-
-  /** Summation operator.
-   *
-   * Initialises instantiated OrthogonalSummation of the respective type via
-   * \a Summator::data, uses OrthogonalSummation::operator() to sum and returns
-   * the result.
-   *
-   * \return result of OrthogonalSummation for given type from MPQCDataMap_t.
-   */
-  MapValue operator()()
-  {
-    // if we just have one indexset, we don't need to get rid of the "union index set"
-    typename OrthogonalSummation<MapValue>::InputSets_t indices(
-        container.begin(),
-        container.end()-1 == container.begin() ? container.end() : container.end()-1);
-    typename OrthogonalSummation<MapValue>::InputValues_t values(
-        container.size() == 1 ? (size_t)1 : container.size()-1);
-    typename std::vector<MapType>::const_iterator dataiter = data.begin();
-    std::vector<size_t>::const_iterator iditer = jobids.begin();
-    for (; dataiter != data.end(); ++dataiter, ++iditer) {
-      const MapType &Data = *dataiter;
-      const MapValue &value = boost::fusion::at_key<MapKey>(Data);
-      values[ MatrixNrLookup[*iditer] ] = value;
-    }
-
-    // create the summation functor and evaluate
-    OrthogonalSummation<MapValue> OS(indices, values, subsetmap);
-    const MapValue result = OS();
-    return result;
-  }
-
-private:
-  //!> Hierarchy of IndexSet's
-  SubsetMap::ptr &subsetmap;
-  //!> vector of data converted from MPQCData
-  const std::vector<MapType> &data;
-  //!> vector of jobids
-  const std::vector<JobId_t> &jobids;
-  //!> container with all IndexSet's
-  const IndexSetContainer::Container_t &container;
-  //!> lookup map from job ids to ordering in above vectors
-  std::map< JobId_t, size_t > MatrixNrLookup;
-};
-
-
-#endif /* SUMMATOR_HPP_ */
Index: src/Fragmentation/Summation/printOrthogonalSum.hpp
===================================================================
--- src/Fragmentation/Summation/printOrthogonalSum.hpp	(revision c6ca23fe871942ffe00849bb181ca2fe88d7bc94)
+++ src/Fragmentation/Summation/printOrthogonalSum.hpp	(revision c6ca23fe871942ffe00849bb181ca2fe88d7bc94)
@@ -0,0 +1,84 @@
+/*
+ * printOrthogonalSum.hpp
+ *
+ *  Created on: 29.07.2012
+ *      Author: heber
+ */
+
+#ifndef PRINTORTHOGONALSUM_HPP_
+#define PRINTORTHOGONALSUM_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <vector>
+
+#include "Fragmentation/Summation/IndexSetContainer.hpp"
+#include "Fragmentation/Summation/SubsetMap.hpp"
+#include "Fragmentation/Summation/OrthogonalSummator.hpp"
+
+#include "Fragmentation/Summation/printKeyNames.hpp"
+
+/** Tiny template functor to use OrthogonalSummation, sum up and print the result.
+ *
+ */
+template <typename MapType>
+struct printOrthogonalSum {
+  /** Constructor takes the arguments that \a OrthogonalSummator also needs and stores
+   * them internally.
+   *
+   * \param _subsetmap map with hierarchy of IndexSet's
+   * \param _data MPQCData converted to MPQCDataMap_t type
+   * \param _jobids job ids to sum data in correct order
+   * \param _container container of IndexSet's such that each set has correct order
+   *        to job id and hence to _data.
+   * \param _MatrixNrLookup lookup from job id to ordering in above vectors
+   */
+  printOrthogonalSum(
+      SubsetMap::ptr &_subsetmap,
+      const std::vector<MapType> &_data,
+      const std::vector<JobId_t> &_jobids,
+      const IndexSetContainer::Container_t &_container,
+      std::map< JobId_t, size_t > &_MatrixNrLookup) : /* cannot make this const due to operator[] */
+    subsetmap(_subsetmap),
+    data(_data),
+    jobids(_jobids),
+    container(_container),
+    MatrixNrLookup(_MatrixNrLookup)
+  {}
+
+  /** Operator that calls on OrthogonalSummator and prints the value.
+   *
+   * \note the parameter is needed for boost::mpl::for_each but is not
+   * used here.
+   */
+  template <typename MapKey>
+  void operator()(MapKey &) {
+    // We retrieve the type of the MPQCData member variable from the boost::fusion::map.
+    typedef typename boost::fusion::result_of::value_at_key<MapType, MapKey>::type MapValue;
+    // create OrthogonalSummator instance
+    OrthogonalSummator<MapType, MapKey> sum_value(
+        subsetmap, data, jobids, container, MatrixNrLookup
+        );
+    // sum up
+    MapValue value = sum_value();
+    // print value
+    LOG(0, "STATUS: Resulting " << printKeyNames::printName<MapKey>() << " is " << value << ".");
+  }
+
+private:
+  //!> Hierarchy of IndexSet's
+  SubsetMap::ptr &subsetmap;
+  //!> vector of data converted from MPQCData
+  const std::vector<MapType> &data;
+  //!> vector of jobids
+  const std::vector<JobId_t> &jobids;
+  //!> container with all IndexSet's
+  const IndexSetContainer::Container_t &container;
+  //!> lookup map from job ids to ordering in above vectors
+  std::map< JobId_t, size_t > MatrixNrLookup;
+};
+
+#endif /* PRINTORTHOGONALSUM_HPP_ */
Index: src/Fragmentation/Summation/printSum.hpp
===================================================================
--- src/Fragmentation/Summation/printSum.hpp	(revision e72c61273d7fd87405519a8e0373d653e9c2d1a6)
+++ 	(revision )
@@ -1,84 +1,0 @@
-/*
- * printSum.hpp
- *
- *  Created on: 29.07.2012
- *      Author: heber
- */
-
-#ifndef PRINTSUM_HPP_
-#define PRINTSUM_HPP_
-
-// include config.h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <vector>
-
-#include "Fragmentation/Summation/IndexSetContainer.hpp"
-#include "Fragmentation/Summation/SubsetMap.hpp"
-#include "Fragmentation/Summation/Summator.hpp"
-
-#include "Fragmentation/Summation/printKeyNames.hpp"
-
-/** Tiny template functor to use OrthogonalSummation, sum up and print the result.
- *
- */
-template <typename MapType>
-struct printSum {
-  /** Constructor takes the arguments that \a Summator also needs and stores
-   * them internally.
-   *
-   * \param _subsetmap map with hierarchy of IndexSet's
-   * \param _data MPQCData converted to MPQCDataMap_t type
-   * \param _jobids job ids to sum data in correct order
-   * \param _container container of IndexSet's such that each set has correct order
-   *        to job id and hence to _data.
-   * \param _MatrixNrLookup lookup from job id to ordering in above vectors
-   */
-  printSum(
-      SubsetMap::ptr &_subsetmap,
-      const std::vector<MapType> &_data,
-      const std::vector<JobId_t> &_jobids,
-      const IndexSetContainer::Container_t &_container,
-      std::map< JobId_t, size_t > &_MatrixNrLookup) : /* cannot make this const due to operator[] */
-    subsetmap(_subsetmap),
-    data(_data),
-    jobids(_jobids),
-    container(_container),
-    MatrixNrLookup(_MatrixNrLookup)
-  {}
-
-  /** Operator that calls on Summator and prints the value.
-   *
-   * \note the parameter is needed for boost::mpl::for_each but is not
-   * used here.
-   */
-  template <typename MapKey>
-  void operator()(MapKey &) {
-    // We retrieve the type of the MPQCData member variable from the boost::fusion::map.
-    typedef typename boost::fusion::result_of::value_at_key<MapType, MapKey>::type MapValue;
-    // create Summator instance
-    Summator<MapType, MapKey> sum_value(
-        subsetmap, data, jobids, container, MatrixNrLookup
-        );
-    // sum up
-    MapValue value = sum_value();
-    // print value
-    LOG(0, "STATUS: Resulting " << printKeyNames::printName<MapKey>() << " is " << value << ".");
-  }
-
-private:
-  //!> Hierarchy of IndexSet's
-  SubsetMap::ptr &subsetmap;
-  //!> vector of data converted from MPQCData
-  const std::vector<MapType> &data;
-  //!> vector of jobids
-  const std::vector<JobId_t> &jobids;
-  //!> container with all IndexSet's
-  const IndexSetContainer::Container_t &container;
-  //!> lookup map from job ids to ordering in above vectors
-  std::map< JobId_t, size_t > MatrixNrLookup;
-};
-
-#endif /* PRINTSUM_HPP_ */
Index: src/Fragmentation/Summation/unittests/Makefile.am
===================================================================
--- src/Fragmentation/Summation/unittests/Makefile.am	(revision e72c61273d7fd87405519a8e0373d653e9c2d1a6)
+++ src/Fragmentation/Summation/unittests/Makefile.am	(revision c6ca23fe871942ffe00849bb181ca2fe88d7bc94)
@@ -48,5 +48,7 @@
 OrthogonalSummationUnitTest_SOURCES = $(top_srcdir)/src/unittests/UnitTestMain.cpp \
 	../Fragmentation/Summation/unittests/OrthogonalSummationUnitTest.cpp \
-	../Fragmentation/Summation/unittests/OrthogonalSummationUnitTest.hpp
+	../Fragmentation/Summation/unittests/OrthogonalSummationUnitTest.hpp \
+	../Fragmentation/Summation/OrthogonalSummation.hpp \
+	../Fragmentation/Summation/OrthogonalSummation_impl.hpp
 OrthogonalSummationUnitTest_LDADD = ${FRAGMENTATIONSUMMATIONLIBS}
 
Index: src/Fragmentation/Summation/unittests/OrthogonalSummationUnitTest.cpp
===================================================================
--- src/Fragmentation/Summation/unittests/OrthogonalSummationUnitTest.cpp	(revision e72c61273d7fd87405519a8e0373d653e9c2d1a6)
+++ src/Fragmentation/Summation/unittests/OrthogonalSummationUnitTest.cpp	(revision c6ca23fe871942ffe00849bb181ca2fe88d7bc94)
@@ -59,18 +59,4 @@
 // Registers the fixture into the 'registry'
 CPPUNIT_TEST_SUITE_REGISTRATION( OrthogonalSummationTest );
-//
-//template <class T>
-//struct SetValueAllocator {
-//  SetValueAllocator(const T &_value) :
-//    value(_value)
-//  {}
-//  SetValue<T> * operator()(const IndexSet &set) {
-//    SetValue<T> * _instance = new SetValue<T>(set, value);
-//    return _instance;
-//  }
-//private:
-//  //!> internally stored fixed initial value
-//  const T value;
-//};
 
 void OrthogonalSummationTest::setUp()
