Index: src/Actions/FragmentationAction/FragmentationAutomationAction.cpp
===================================================================
--- src/Actions/FragmentationAction/FragmentationAutomationAction.cpp	(revision 849cd8e107c07fa8b744cd0f691da136460b27f0)
+++ src/Actions/FragmentationAction/FragmentationAutomationAction.cpp	(revision 1849434d9b5e8747f19c49b9bd8147e201503b9c)
@@ -52,4 +52,5 @@
 #include "Fragmentation/ForceMatrix.hpp"
 #include "Fragmentation/Fragmentation.hpp"
+#include "Fragmentation/SetValues/Fragment.hpp"
 #include "Fragmentation/SetValues/Histogram.hpp"
 #include "Fragmentation/SetValues/IndexedVectors.hpp"
@@ -378,4 +379,23 @@
 
 template <>
+void convertMPQCDataTo<MPQCDataFragmentMap_t>(
+    const std::vector<MPQCData> &fragmentData,
+    std::vector<MPQCDataFragmentMap_t> &MPQCData_Fragment_fused)
+{
+  // fragment
+  MPQCData_Fragment_fused.clear();
+  MPQCData_Fragment_fused.reserve(fragmentData.size());
+  for(std::vector<MPQCData>::const_iterator dataiter = fragmentData.begin();
+      dataiter != fragmentData.end(); ++dataiter) {
+    const MPQCData &extractedData = *dataiter;
+    LOG(2, "DEBUG: Current extracted Data is " << extractedData << ".");
+    MPQCDataFragmentMap_t instance;
+    boost::fusion::at_key<MPQCDataFused::fragment>(instance) =
+        Fragment(extractedData.positions, extractedData.charges);
+    MPQCData_Fragment_fused.push_back(instance);
+  }
+}
+
+template <>
 void convertMPQCDataTo<MPQCDataTimeMap_t>(
     const std::vector<MPQCData> &fragmentData,
@@ -429,5 +449,6 @@
  * @param KeySetFilename filename with keysets to associate forces correctly
  * @param NoAtoms total number of atoms
- * @param full_sample summed up charge from fragments on return
+ * @param full_sample summed up charge density of electrons from fragments on return
+ * @param full_fragment summed up positions and charges of nuclei from fragments on return
  */
 bool sumUpChargeDensity(
@@ -435,5 +456,6 @@
     const std::vector<MPQCData> &fragmentData,
     const std::string &KeySetFilename,
-    SamplingGrid &full_sample)
+    SamplingGrid &full_sample,
+    Fragment &full_fragment)
 {
   // create lookup from job nr to fragment number
@@ -468,6 +490,10 @@
     SumUpPerLevel<MPQCDataGridMap_t, MPQCDataGridVector_t>(
         fragmentData, jobids, MatrixNrLookup, container, subsetmap));
+  std::vector<MPQCDataFragmentMap_t> Result_Fragment_fused(
+    SumUpPerLevel<MPQCDataFragmentMap_t, MPQCDataFragmentVector_t>(
+        fragmentData, jobids, MatrixNrLookup, container, subsetmap));
   // obtain full grid
   full_sample = boost::fusion::at_key<MPQCDataFused::sampled_grid>(Result_Grid_fused.back());
+  full_fragment = boost::fusion::at_key<MPQCDataFused::fragment>(Result_Fragment_fused.back());
 
   return true;
@@ -673,5 +699,6 @@
     const FragmentationFragmentationAutomationAction::FragmentationFragmentationAutomationParameters &params,
     const std::vector<MPQCData> &fragmentData,
-    const SamplingGrid &full_sampled_grid)
+    const SamplingGrid &full_sampled_grid,
+    const Fragment &full_fragment)
 {
   std::vector<FragmentJob::ptr> jobs;
@@ -696,6 +723,6 @@
 //    ASSERT( M.determinant() == size*size*size,
 //        "createLongRangeJobs() - current domain matrix "+toString(M)+" is not cubic.");
-    const std::vector< std::vector<double> > positions;
-    const std::vector<double> charges;
+    const std::vector< std::vector<double> > positions(full_fragment.getPositions());
+    const std::vector<double> charges(full_fragment.getCharges());
     const JobId_t next_id = controller.getAvailableId();
     LOG(1, "INFO: Creating full VMGJob with " << full_sampled_grid.sampled_grid.size()
@@ -766,9 +793,11 @@
   LOG(1, "INFO: Parsing fragment files from " << params.path.get() << ".");
   SamplingGrid full_sample;
+  Fragment full_fragment;
   sumUpChargeDensity(
       MPQCresults,
       fragmentData,
       params.path.get(),
-      full_sample);
+      full_sample,
+      full_fragment);
 
   // Phase Four: obtain more ids
@@ -777,5 +806,5 @@
 
   // Phase Five: create VMGJobs
-  if (!createLongRangeJobs(controller, params, fragmentData, full_sample))
+  if (!createLongRangeJobs(controller, params, fragmentData, full_sample, full_fragment))
     return Action::failure;
   RunService(io_service, "Adding VMGJobs");
