Index: src/Fragmentation/Summation/Makefile.am
===================================================================
--- src/Fragmentation/Summation/Makefile.am	(revision 3023451f9bb244c1ffafbac7f100be34a2430f1f)
+++ src/Fragmentation/Summation/Makefile.am	(revision 0398bd3f86573bb724b71c8e05ebaeadda50c7c7)
@@ -17,4 +17,5 @@
 	Fragmentation/Summation/OrthogonalSummation_impl.hpp \
 	Fragmentation/Summation/OrthogonalSummator.hpp \
+	Fragmentation/Summation/OrthogonalSumUpPerLevel.hpp \
 	Fragmentation/Summation/printKeyNames.hpp \
 	Fragmentation/Summation/SetValue.hpp \
@@ -25,4 +26,5 @@
 	Fragmentation/Summation/Summation_impl.hpp \
 	Fragmentation/Summation/Summator.hpp \
+	Fragmentation/Summation/SumUpPerLevel.hpp \
 	Fragmentation/Summation/ValuePrinter.hpp \
 	Fragmentation/Summation/writeTable.hpp \
Index: src/Fragmentation/Summation/OrthogonalSumUpPerLevel.hpp
===================================================================
--- src/Fragmentation/Summation/OrthogonalSumUpPerLevel.hpp	(revision 0398bd3f86573bb724b71c8e05ebaeadda50c7c7)
+++ src/Fragmentation/Summation/OrthogonalSumUpPerLevel.hpp	(revision 0398bd3f86573bb724b71c8e05ebaeadda50c7c7)
@@ -0,0 +1,56 @@
+/*
+ * OrthogonalSumUpPerLevel.hpp
+ *
+ *  Created on: Aug 27, 2012
+ *      Author: heber
+ */
+
+#ifndef ORTHOGONALSUMUPPERLEVEL_HPP_
+#define ORTHOGONALSUMUPPERLEVEL_HPP_
+
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+
+#include <map>
+#include <vector>
+
+#include "Fragmentation/Converter/DataConverter.hpp"
+#include "Fragmentation/Summation/AllLevelOrthogonalSummator.hpp"
+#include "Fragmentation/Summation/IndexSetContainer.hpp"
+
+#include "Jobs/MPQCData.hpp"
+
+#include <boost/mpl/for_each.hpp>
+
+template <typename TypeMap, typename TypeVector>
+std::vector<TypeMap> OrthogonalSumUpPerLevel(
+    const std::vector<MPQCData> &fragmentData,
+    const std::vector<JobId_t> &jobids,
+    std::map< JobId_t, size_t > &MatrixNrLookup,
+    const IndexSetContainer::ptr &container,
+    SubsetMap::ptr &subsetmap
+    )
+{
+  // place data into boost::fusion::map instance
+  std::vector<TypeMap> MPQCData_fused;
+  convertDataTo<MPQCData, TypeMap>(fragmentData, MPQCData_fused);
+  // instantiate summator
+  std::vector<TypeMap> Result_fused(subsetmap->getMaximumSubsetLevel());
+  AllLevelOrthogonalSummator<TypeMap> Summer(
+              subsetmap,
+              MPQCData_fused,
+              jobids,
+              container->getContainer(),
+              MatrixNrLookup,
+              Result_fused);
+  // sum up for each type key in TypeVector
+  boost::mpl::for_each<TypeVector>(boost::ref(Summer));
+  return Result_fused;
+}
+
+
+#endif /* ORTHOGONALSUMUPPERLEVEL_HPP_ */
Index: src/Fragmentation/Summation/SumUpPerLevel.hpp
===================================================================
--- src/Fragmentation/Summation/SumUpPerLevel.hpp	(revision 0398bd3f86573bb724b71c8e05ebaeadda50c7c7)
+++ src/Fragmentation/Summation/SumUpPerLevel.hpp	(revision 0398bd3f86573bb724b71c8e05ebaeadda50c7c7)
@@ -0,0 +1,55 @@
+/*
+ * SumUpPerLevel.hpp
+ *
+ *  Created on: Aug 27, 2012
+ *      Author: heber
+ */
+
+#ifndef SUMUPPERLEVEL_HPP_
+#define SUMUPPERLEVEL_HPP_
+
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <map>
+#include <vector>
+
+#include "Fragmentation/Converter/DataConverter.hpp"
+#include "Fragmentation/Summation/AllLevelSummator.hpp"
+#include "Fragmentation/Summation/IndexSetContainer.hpp"
+
+#include "Jobs/MPQCData.hpp"
+
+#include <boost/mpl/for_each.hpp>
+
+template <typename TypeMap, typename TypeVector>
+std::vector<TypeMap> SumUpPerLevel(
+    const std::vector<MPQCData> &fragmentData,
+    const std::vector<JobId_t> &jobids,
+    std::map< JobId_t, size_t > &MatrixNrLookup,
+    const IndexSetContainer::ptr &container,
+    SubsetMap::ptr &subsetmap
+    )
+{
+  // place data into boost::fusion::map instance
+  std::vector<TypeMap> MPQCData_fused;
+  convertDataTo<MPQCData, TypeMap>(fragmentData, MPQCData_fused);
+  // instantiate summator
+  std::vector<TypeMap> Result_fused(subsetmap->getMaximumSubsetLevel());
+  AllLevelSummator<TypeMap> Summer(
+              subsetmap,
+              MPQCData_fused,
+              jobids,
+              container->getContainer(),
+              MatrixNrLookup,
+              Result_fused);
+  // sum up for each type key in TypeVector
+  boost::mpl::for_each<TypeVector>(boost::ref(Summer));
+  return Result_fused;
+}
+
+
+#endif /* SUMUPPERLEVEL_HPP_ */
