Index: src/Actions/FragmentationAction/FragmentationAutomationAction.cpp
===================================================================
--- src/Actions/FragmentationAction/FragmentationAutomationAction.cpp	(revision c42a433c75c0f0aecd907cbc3120544ffdfecda3)
+++ src/Actions/FragmentationAction/FragmentationAutomationAction.cpp	(revision 27afbfb8dd654781c2da98607fb879fd28cd8d5a)
@@ -57,6 +57,5 @@
 #include "Fragmentation/Summation/AllLevelOrthogonalSummator.hpp"
 #include "Fragmentation/Summation/AllLevelSummator.hpp"
-#include "Fragmentation/Summation/HeaderPrinter.hpp"
-#include "Fragmentation/Summation/ValuePrinter.hpp"
+#include "Fragmentation/Summation/writeTable.hpp"
 #include "Graph/DepthFirstSearchAnalysis.hpp"
 #include "Helpers/defs.hpp"
@@ -425,15 +424,19 @@
     boost::mpl::for_each<MPQCDataTimeVector_t>(boost::ref(timeSummer));
 
-    // create header line for energy
-    HeaderPrinter header("level");
-    boost::mpl::for_each<MPQCDataEnergyVector_t>(boost::ref(header));
-    LOG(0, header.get());
-
-    // print values per line
-    for (size_t level = 1; level <= subsetmap->getMaximumSubsetLevel(); ++level) {
-      ValuePrinter<MPQCDataEnergyMap_t> values(Result_Energy_fused[level-1], level);
-      boost::mpl::for_each<MPQCDataEnergyVector_t>(boost::ref(values));
-      LOG(0, values.get());
-    }
+    // print tables
+    const size_t MaxLevel = subsetmap->getMaximumSubsetLevel();
+    const std::string energyresult =
+        writeTable<MPQCDataEnergyMap_t, MPQCDataEnergyVector_t>()(
+            Result_Energy_fused, MaxLevel);
+    LOG(0, "Energy table is \n" << energyresult);
+    const std::string forceresult =
+        writeTable<MPQCDataForceMap_t, MPQCDataForceVector_t>()(
+            Result_Force_fused, MaxLevel);
+    LOG(0, "Force table is \n" << forceresult);
+    // we don't want to print grid to a table
+    const std::string timesresult =
+        writeTable<MPQCDataTimeMap_t, MPQCDataTimeVector_t>()(
+            Result_Time_fused, MaxLevel);
+    LOG(0, "Times table is \n" << timesresult);
   }
 
Index: src/Fragmentation/Summation/Makefile.am
===================================================================
--- src/Fragmentation/Summation/Makefile.am	(revision c42a433c75c0f0aecd907cbc3120544ffdfecda3)
+++ src/Fragmentation/Summation/Makefile.am	(revision 27afbfb8dd654781c2da98607fb879fd28cd8d5a)
@@ -25,4 +25,5 @@
 	Fragmentation/Summation/Summator.hpp \
 	Fragmentation/Summation/ValuePrinter.hpp \
+	Fragmentation/Summation/writeTable.hpp \
 	Fragmentation/Summation/ZeroInstance.hpp
 
Index: src/Fragmentation/Summation/ValuePrinter.hpp
===================================================================
--- src/Fragmentation/Summation/ValuePrinter.hpp	(revision c42a433c75c0f0aecd907cbc3120544ffdfecda3)
+++ src/Fragmentation/Summation/ValuePrinter.hpp	(revision 27afbfb8dd654781c2da98607fb879fd28cd8d5a)
@@ -16,4 +16,6 @@
 
 #include <boost/fusion/container/map.hpp>
+#include <iomanip>
+#include <sstream>
 #include <string>
 
@@ -27,5 +29,5 @@
  * containing all these keys is present
  */
-template <typename MapType>
+template <typename MapType, int numprecision=5>
 struct ValuePrinter {
   ValuePrinter(const MapType &_instance, const size_t level) :
@@ -37,5 +39,7 @@
   void operator()(MapKey &) {
     //typedef typename boost::fusion::result_of::value_at_key<MapType, MapKey>::type MapValue;
-    value += std::string("\t") + toString(boost::fusion::at_key<MapKey>(instance));
+    std::stringstream valuestream;
+    valuestream << std::setprecision(numprecision) << boost::fusion::at_key<MapKey>(instance);
+    value += std::string("\t") + valuestream.str();
   }
 
Index: src/Fragmentation/Summation/writeTable.hpp
===================================================================
--- src/Fragmentation/Summation/writeTable.hpp	(revision 27afbfb8dd654781c2da98607fb879fd28cd8d5a)
+++ src/Fragmentation/Summation/writeTable.hpp	(revision 27afbfb8dd654781c2da98607fb879fd28cd8d5a)
@@ -0,0 +1,56 @@
+/*
+ * writeTable.hpp
+ *
+ *  Created on: Aug 3, 2012
+ *      Author: heber
+ */
+
+#ifndef WRITETABLE_HPP_
+#define WRITETABLE_HPP_
+
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <boost/mpl/for_each.hpp>
+
+#include <string>
+#include <sstream>
+#include <vector>
+
+#include "Fragmentation/Summation/HeaderPrinter.hpp"
+#include "Fragmentation/Summation/ValuePrinter.hpp"
+
+/** Templated functor to write from a given vector of summed up results the
+ * table with decent header line.
+ *
+ * @param results vector of results of MapType
+ * @param MaxLevel print values up till this level
+ * @return string of the resulting table
+ */
+template <typename MapType, typename VectorType, int numprecision=10>
+struct writeTable{
+  std::string operator()(const std::vector<MapType> &results, const size_t MaxLevel, const size_t StartLevel=1)
+  {
+    std::stringstream resultstream;
+    // create header line for energy
+    HeaderPrinter header("level");
+    boost::mpl::for_each<VectorType>(boost::ref(header));
+    resultstream << header.get() << std::endl;
+
+    // print values per line
+    ASSERT( results.size() >= (MaxLevel-StartLevel),
+        "writeTable<M,V>() - results has insufficient size.");
+    for (size_t level = StartLevel; level <= MaxLevel; ++level) {
+      ValuePrinter<MapType, numprecision> values(results[level-1], level);
+      boost::mpl::for_each<VectorType>(boost::ref(values));
+      resultstream << values.get() << std::endl;
+    }
+    return resultstream.str();
+  }
+};
+
+
+#endif /* WRITETABLE_HPP_ */
