Index: src/Actions/FragmentationAction/AnalyseFragmentationResultsAction.cpp
===================================================================
--- src/Actions/FragmentationAction/AnalyseFragmentationResultsAction.cpp	(revision 47cee77c416ae305ae2648bbac752afcf74f0537)
+++ src/Actions/FragmentationAction/AnalyseFragmentationResultsAction.cpp	(revision c8d13f55d9d5c1539f427f0da8fce3b2b2cf5d1a)
@@ -535,4 +535,6 @@
   printReceivedShortResults(shortrangeresults);
   printReceivedShortResultsPerIndex(shortrangeresults);
+  // add summed results to container
+  container.addShortRangeSummedResults(shortrangeresults.getSummedShortRangeResults());
 
   /// now do we need to calculate the cycle contribution
Index: src/Fragmentation/Summation/Containers/FragmentationResultContainer.cpp
===================================================================
--- src/Fragmentation/Summation/Containers/FragmentationResultContainer.cpp	(revision 47cee77c416ae305ae2648bbac752afcf74f0537)
+++ src/Fragmentation/Summation/Containers/FragmentationResultContainer.cpp	(revision c8d13f55d9d5c1539f427f0da8fce3b2b2cf5d1a)
@@ -96,4 +96,12 @@
 }
 
+void FragmentationResultContainer::addShortRangeSummedResults(
+    const FragmentationShortRangeResults::summedshortrange_t &_summedshortrange
+    )
+{
+  OBSERVE;
+  summedshortrange.insert(_summedshortrange.begin(), _summedshortrange.end());
+}
+
 #ifdef HAVE_VMG
 const FragmentationResultContainer::longrangedata_t&
Index: src/Fragmentation/Summation/Containers/FragmentationResultContainer.hpp
===================================================================
--- src/Fragmentation/Summation/Containers/FragmentationResultContainer.hpp	(revision 47cee77c416ae305ae2648bbac752afcf74f0537)
+++ src/Fragmentation/Summation/Containers/FragmentationResultContainer.hpp	(revision c8d13f55d9d5c1539f427f0da8fce3b2b2cf5d1a)
@@ -29,5 +29,8 @@
 
 #include "Fragmentation/KeySetsContainer.hpp"
+#include "Fragmentation/Summation/IndexSet.hpp"
+#include "Fragmentation/Summation/Containers/FragmentationShortRangeResults.hpp"
 #include "Fragmentation/Summation/Containers/MPQCData.hpp"
+#include "Fragmentation/Summation/Containers/MPQCDataMap.hpp"
 #ifdef HAVE_VMG
 #include "Fragmentation/Summation/Containers/VMGData.hpp"
@@ -94,4 +97,14 @@
       );
 
+  /** Adds a a set of summed short range results.
+   *
+   * Adds all the containers to the ones present in this instance.
+   *
+   * \param _summedshortrange energy results per index set
+   */
+  void addShortRangeSummedResults(
+      const FragmentationShortRangeResults::summedshortrange_t &_summedshortrange
+      );
+
   /** Adds given cycles to internal keyset list.
    *
@@ -111,4 +124,5 @@
     forcekeysets.clear();
     shortrangedata.clear();
+    summedshortrange.clear();
 #ifdef HAVE_VMG
     longrangedata.clear();
@@ -121,4 +135,5 @@
   const KeySetsContainer &getForceKeySets() const  { return forcekeysets; }
   const shortrangedata_t& getShortRangeResults() const  { return shortrangedata; }
+  const FragmentationShortRangeResults::summedshortrange_t& getShortRangeSummedResults() const  { return summedshortrange; }
 #ifdef HAVE_VMG
   const longrangedata_t& getLongRangeResults() const;
@@ -141,4 +156,6 @@
   //! container of all cycle keysets
   KeySetsContainer cycles;
+  //!> container for summed up results per index set
+  FragmentationShortRangeResults::summedshortrange_t summedshortrange;
 
 #ifdef HAVE_VMG
@@ -158,4 +175,6 @@
     if (version > 0)
       ar & cycles;
+    if (version > 1)
+      ar & summedshortrange;
 #ifdef HAVE_VMG
     ar & longrangedata;
@@ -165,5 +184,5 @@
 
 // version for serialized information associated to FragmentationResultContainer
-BOOST_CLASS_VERSION(FragmentationResultContainer, 1)
+BOOST_CLASS_VERSION(FragmentationResultContainer, 2)
 
 #endif /* FRAGMENTATIONRESULTCONTAINER_HPP_ */
Index: src/Fragmentation/Summation/Containers/FragmentationShortRangeResults.cpp
===================================================================
--- src/Fragmentation/Summation/Containers/FragmentationShortRangeResults.cpp	(revision 47cee77c416ae305ae2648bbac752afcf74f0537)
+++ src/Fragmentation/Summation/Containers/FragmentationShortRangeResults.cpp	(revision c8d13f55d9d5c1539f427f0da8fce3b2b2cf5d1a)
@@ -39,4 +39,5 @@
 #include "FragmentationShortRangeResults.hpp"
 
+#include <boost/fusion/container/map.hpp>
 #include <boost/mpl/for_each.hpp>
 #include <boost/mpl/remove.hpp>
@@ -117,2 +118,18 @@
   }
 }
+
+const FragmentationShortRangeResults::summedshortrange_t
+FragmentationShortRangeResults::getSummedShortRangeResults() const
+{
+  summedshortrange_t results;
+  typedef std::map<IndexSet::ptr, std::pair<MPQCDataEnergyMap_t,MPQCDataEnergyMap_t> > maptype_t;
+  for (typename maptype_t::const_iterator resultiter = Result_perIndexSet_Energy.begin();
+      resultiter != Result_perIndexSet_Energy.end(); ++resultiter) {
+    MPQCData values;
+    values.energies.total = boost::fusion::at_key<MPQCDataFused::energy_total>(resultiter->second.first);
+    MPQCData contributions;
+    contributions.energies.total = boost::fusion::at_key<MPQCDataFused::energy_total>(resultiter->second.second);
+    results.insert( std::make_pair( resultiter->first, std::make_pair(values, contributions) ) );
+  }
+  return results;
+}
Index: src/Fragmentation/Summation/Containers/FragmentationShortRangeResults.hpp
===================================================================
--- src/Fragmentation/Summation/Containers/FragmentationShortRangeResults.hpp	(revision 47cee77c416ae305ae2648bbac752afcf74f0537)
+++ src/Fragmentation/Summation/Containers/FragmentationShortRangeResults.hpp	(revision c8d13f55d9d5c1539f427f0da8fce3b2b2cf5d1a)
@@ -79,4 +79,7 @@
   }
 
+  typedef std::map<IndexSet::ptr, std::pair<MPQCData,MPQCData> > summedshortrange_t;
+  const summedshortrange_t getSummedShortRangeResults() const;
+
 private:
   void initLookups(
Index: src/Fragmentation/Summation/IndexSet.hpp
===================================================================
--- src/Fragmentation/Summation/IndexSet.hpp	(revision 47cee77c416ae305ae2648bbac752afcf74f0537)
+++ src/Fragmentation/Summation/IndexSet.hpp	(revision c8d13f55d9d5c1539f427f0da8fce3b2b2cf5d1a)
@@ -13,4 +13,9 @@
 #include <config.h>
 #endif
+
+#include <boost/serialization/access.hpp>
+#include <boost/serialization/base_object.hpp>
+#include <boost/serialization/set.hpp>
+#include <boost/serialization/shared_ptr.hpp>
 
 #include <boost/shared_ptr.hpp>
@@ -47,4 +52,11 @@
 
 private:
+  friend class boost::serialization::access;
+  // serialization
+  template <typename Archive>
+  void serialize(Archive& ar, const unsigned int version)
+  {
+    ar & boost::serialization::base_object< std::set<Index_t> >(*this);
+  }
 };
 
@@ -71,3 +83,5 @@
 std::ostream & operator<<(std::ostream &ost, const IndexSet &indexset);
 
+BOOST_SERIALIZATION_SHARED_PTR(IndexSet)
+
 #endif /* INDEXSET_HPP_ */
Index: src/Fragmentation/Summation/writeIndexedTable.hpp
===================================================================
--- src/Fragmentation/Summation/writeIndexedTable.hpp	(revision 47cee77c416ae305ae2648bbac752afcf74f0537)
+++ src/Fragmentation/Summation/writeIndexedTable.hpp	(revision c8d13f55d9d5c1539f427f0da8fce3b2b2cf5d1a)
@@ -42,15 +42,16 @@
 
     /// create header line for energy
-    resultstream << "level\tkeyset";
+    resultstream << "index\tlevel\tkeyset";
     {
       HeaderPrinter header("_value");
       boost::mpl::for_each<VectorType>(boost::ref(header));
-      resultstream << header.get() << std::endl;
+      resultstream << header.get();
     }
     {
       HeaderPrinter header("_contribution");
       boost::mpl::for_each<VectorType>(boost::ref(header));
-      resultstream << header.get() << std::endl;
+      resultstream << header.get();
     }
+    resultstream << std::endl;
 
     /// print values per line
@@ -58,7 +59,8 @@
       ASSERT( results.size() >= (MaxLevel-StartLevel),
           "writeIndexedTable<M,V>() - results has insufficient size.");
+      size_t index = 0;
       for (typename maptype_t::const_iterator resultiter = results.begin();
-          resultiter != results.end(); ++resultiter) {
-        resultstream << resultiter->first->size() << "\t" << "{";
+          resultiter != results.end(); ++resultiter, ++index) {
+        resultstream << index << "\t" << resultiter->first->size() << "\t" << "{";
         for (IndexSet::const_iterator keyiter = resultiter->first->begin();
             keyiter != resultiter->first->end(); ++keyiter)
