Index: src/Fragmentation/Summation/Containers/Makefile.am
===================================================================
--- src/Fragmentation/Summation/Containers/Makefile.am	(revision 346b0c6ef65628e293037e2cd3676574583012c8)
+++ src/Fragmentation/Summation/Containers/Makefile.am	(revision bb8b0ad03160a4d002def3445d1d4d98e1ad3e25)
@@ -34,4 +34,6 @@
 	Fragmentation/Summation/Containers/FragmentationLongRangeResults.hpp \
 	Fragmentation/Summation/Containers/GridDownsampler.hpp \
+	Fragmentation/Summation/Containers/PartialChargesFused.hpp \
+	Fragmentation/Summation/Containers/PartialChargesMap.hpp \
 	Fragmentation/Summation/Containers/VMGData.hpp \
 	Fragmentation/Summation/Containers/VMGDataFused.hpp \
Index: src/Fragmentation/Summation/Containers/PartialChargesFused.hpp
===================================================================
--- src/Fragmentation/Summation/Containers/PartialChargesFused.hpp	(revision bb8b0ad03160a4d002def3445d1d4d98e1ad3e25)
+++ src/Fragmentation/Summation/Containers/PartialChargesFused.hpp	(revision bb8b0ad03160a4d002def3445d1d4d98e1ad3e25)
@@ -0,0 +1,31 @@
+/*
+ * PartialChargesFused.hpp
+ *
+ *  Created on: Jun 12, 2016
+ *      Author: heber
+ */
+
+
+#ifndef PARTIALCHARGESFUSED_HPP_
+#define PARTIALCHARGESFUSED_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+/** This namespace contains a key for its sole data member PartialCharges.
+ *
+ * We need these keys as enumeration of the data members to allow
+ * generic algorithms to work on it.
+ *
+ * \note forward declarations are not enough as we need the true (but empty)
+ * instance when going through the list with boost::mpl::for_each.
+ */
+struct PartialChargesFused
+{
+  // keys for partial charges
+  struct partial_charges_t {};
+};
+
+#endif /* PARTIALCHARGESFUSED_HPP_ */
Index: src/Fragmentation/Summation/Containers/PartialChargesMap.hpp
===================================================================
--- src/Fragmentation/Summation/Containers/PartialChargesMap.hpp	(revision bb8b0ad03160a4d002def3445d1d4d98e1ad3e25)
+++ src/Fragmentation/Summation/Containers/PartialChargesMap.hpp	(revision bb8b0ad03160a4d002def3445d1d4d98e1ad3e25)
@@ -0,0 +1,39 @@
+/*
+ * PartialChargesMap.hpp
+ *
+ *  Created on: Jun 12, 2016
+ *      Author: heber
+ */
+
+
+#ifndef PARTIALCHARGESMAP_HPP_
+#define PARTIALCHARGESMAP_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <boost/fusion/container/map.hpp>
+#include <boost/mpl/list.hpp>
+
+#include "Fragmentation/Summation/Containers/PartialChargesFused.hpp"
+
+class IndexedPartialCharges;
+
+/** This boost::fusion map defines key-value or rather key-type pairs with
+ * which we associate all forces data members in MPQCData and their type.
+ *
+ * This lets us resolves any ambiguitites of types in MPQCData, e.g.
+ * to know vector<double> is forces or energy_eigenvalues.
+ *
+ */
+typedef boost::fusion::map<
+  boost::fusion::pair<PartialChargesFused::partial_charges_t, IndexedPartialCharges >
+> PartialChargesMap_t;
+
+typedef boost::mpl::list<
+    PartialChargesFused::partial_charges_t
+> PartialChargesVector_t;
+
+#endif /* PARTIALCHARGESMAP_HPP_ */
Index: src/Fragmentation/Summation/SetValues/IndexedPartialCharges.cpp
===================================================================
--- src/Fragmentation/Summation/SetValues/IndexedPartialCharges.cpp	(revision bb8b0ad03160a4d002def3445d1d4d98e1ad3e25)
+++ src/Fragmentation/Summation/SetValues/IndexedPartialCharges.cpp	(revision bb8b0ad03160a4d002def3445d1d4d98e1ad3e25)
@@ -0,0 +1,60 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2016 Frederik Heber. All rights reserved.
+ *
+ *
+ *   This file is part of MoleCuilder.
+ *
+ *    MoleCuilder is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation, either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    MoleCuilder is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with MoleCuilder.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IndexedPartialCharges.cpp
+ *
+ *  Created on: Jun 12, 2016
+ *      Author: heber
+ */
+
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include <iostream>
+
+#include "IndexedPartialCharges.hpp"
+
+template <>
+IndexedPartialCharges ZeroInstance<IndexedPartialCharges>()
+{
+  IndexedPartialCharges returnvalue;
+  return returnvalue;
+}
+
+template <>
+partial_charge_t ZeroInstance<partial_charge_t>()
+{
+  partial_charge_t returnvalue;
+  return returnvalue;
+}
+
+std::ostream & operator<<(std::ostream &ost, const partial_charge_t &other)
+{
+  ost << other.charge;
+  return ost;
+}
Index: src/Fragmentation/Summation/SetValues/IndexedPartialCharges.hpp
===================================================================
--- src/Fragmentation/Summation/SetValues/IndexedPartialCharges.hpp	(revision bb8b0ad03160a4d002def3445d1d4d98e1ad3e25)
+++ src/Fragmentation/Summation/SetValues/IndexedPartialCharges.hpp	(revision bb8b0ad03160a4d002def3445d1d4d98e1ad3e25)
@@ -0,0 +1,110 @@
+/*
+ * IndexedPartialCharges.hpp
+ *
+ *  Created on: Jun 12, 2016
+ *      Author: heber
+ */
+
+
+#ifndef INDEXEDPARTIALCHARGES_HPP_
+#define INDEXEDPARTIALCHARGES_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <iosfwd>
+
+#include "Fragmentation/Summation/SetValues/IndexedValue.hpp"
+#include "Fragmentation/Summation/ZeroInstance.hpp"
+
+struct partial_charge_t
+{
+  //!> typedef for a single charge
+  typedef double charge_t;
+  charge_t charge;
+
+  /** Default constructor for a partial charge.
+   */
+  partial_charge_t() :
+    charge(0.)
+  {}
+
+  /** Constructor for a partial charge.
+   *
+   * \param _charge new partial charge
+   */
+  partial_charge_t(const double &_charge) :
+    charge(_charge)
+  {}
+
+  /** Assignment operator for the charge.
+   *
+   * \param _charge new partial charge
+   */
+  partial_charge_t& operator()(const double &_charge)
+  {
+    charge = _charge;
+    return *this;
+  }
+
+  /** Sum operator.
+   *
+   * \param _charge new partial charge
+   */
+  partial_charge_t& operator+=(const double &_charge)
+  { charge += _charge; return *this; }
+
+  /** Subtraction operator.
+   *
+   * \param _charge new partial charge
+   */
+  partial_charge_t& operator-=(const double &_charge)
+  { charge -= _charge; return *this; }
+
+  /** Comparator for partial charge.
+   *
+   * \param other other charge instance
+   */
+  bool operator==(const partial_charge_t &other) const
+  { return charge == other.charge; }
+
+  bool operator!=(const partial_charge_t &other) const
+  { return !operator==(other); }
+
+  bool operator<(const partial_charge_t &other) const
+  { return charge < other.charge; }
+
+  /** Summation operator for two force vectors.
+   *
+   * \param other other charge
+   * \param prefactor prefactor to use in summation (e.g. -1 gives a subtraction)
+   */
+  void superposeOtherIndexedVectors(const partial_charge_t &other, const double prefactor)
+  { charge = charge + prefactor * other.charge; }
+
+  // make output operator friend
+  friend std::ostream & operator<<(std::ostream &ost, const partial_charge_t &other);
+};
+
+std::ostream & operator<<(std::ostream &ost, const partial_charge_t &other);
+
+struct IndexedPartialCharges  : public IndexedValue<partial_charge_t>
+{
+public:
+  IndexedPartialCharges(
+    const typename IndexedValue<partial_charge_t>::indices_t &_indices,
+    const typename IndexedValue<partial_charge_t>::values_t &_charges) :
+    IndexedValue<partial_charge_t>(_indices, _charges)
+    {}
+
+  IndexedPartialCharges()
+  {}
+};
+
+template<typename T> T ZeroInstance();
+template<> IndexedPartialCharges ZeroInstance< IndexedPartialCharges >();
+template<> partial_charge_t ZeroInstance< partial_charge_t >();
+
+#endif /* INDEXEDPARTIALCHARGES_HPP_ */
Index: src/Fragmentation/Summation/SetValues/Makefile.am
===================================================================
--- src/Fragmentation/Summation/SetValues/Makefile.am	(revision 346b0c6ef65628e293037e2cd3676574583012c8)
+++ src/Fragmentation/Summation/SetValues/Makefile.am	(revision bb8b0ad03160a4d002def3445d1d4d98e1ad3e25)
@@ -8,4 +8,5 @@
 	Fragmentation/Summation/SetValues/FragmentForces.cpp \
 	Fragmentation/Summation/SetValues/Histogram.cpp \
+	Fragmentation/Summation/SetValues/IndexedPartialCharges.cpp \
 	Fragmentation/Summation/SetValues/IndexedVectors.cpp \
 	Fragmentation/Summation/SetValues/SamplingGrid.cpp \
@@ -18,4 +19,5 @@
 	Fragmentation/Summation/SetValues/FragmentForces.hpp \
 	Fragmentation/Summation/SetValues/Histogram.hpp \
+	Fragmentation/Summation/SetValues/IndexedPartialCharges.hpp \
 	Fragmentation/Summation/SetValues/IndexedValue.hpp \
 	Fragmentation/Summation/SetValues/IndexedValue_impl.hpp \
