Index: src/Fragmentation/Homology/AtomFragmentsMap.cpp
===================================================================
--- src/Fragmentation/Homology/AtomFragmentsMap.cpp	(revision d410e25a69525e6b36defe22586e079cb795a160)
+++ src/Fragmentation/Homology/AtomFragmentsMap.cpp	(revision 70aeed3b67cffd54c9033b134adc7becc241cdae)
@@ -69,4 +69,6 @@
       }
     }
+    // add empty entry to fullkeysets, too (if already present, we ignore that)
+    fullkeysets.insert( std::make_pair(keyset, indices_t()) );
   }
   LOG(2, "DEBUG: There are now " << atommap.size() << " entries in lookup.");
@@ -109,4 +111,36 @@
 }
 
+bool AtomFragmentsMap::addFullKeyset(const KeySet &_keyset, const indices_t &_fullkeyset)
+{
+  FragmentFullKeysetMap_t::iterator iter = fullkeysets.find(_keyset);
+  if ((iter == fullkeysets.end()) || (!iter->second.empty()))
+    return false;
+  else {
+    iter->second = _fullkeyset;
+  }
+  return true;
+}
+
+const AtomFragmentsMap::indices_t &
+AtomFragmentsMap::getFullKeyset(const KeySet &_keyset) const
+{
+  static indices_t emptyset;
+  FragmentFullKeysetMap_t::const_iterator iter = fullkeysets.find(_keyset);
+  if (iter == fullkeysets.end())
+    return emptyset;
+  else
+    return iter->second;
+}
+
+bool AtomFragmentsMap::checkCompleteness() const
+{
+  bool status = true;
+  for (FragmentFullKeysetMap_t::const_iterator iter = fullkeysets.begin();
+      iter != fullkeysets.end(); ++iter)
+    status &= (iter->second.size() != 0);
+
+  return status;
+}
+
 CONSTRUCT_SINGLETON(AtomFragmentsMap)
 
Index: src/Fragmentation/Homology/AtomFragmentsMap.hpp
===================================================================
--- src/Fragmentation/Homology/AtomFragmentsMap.hpp	(revision d410e25a69525e6b36defe22586e079cb795a160)
+++ src/Fragmentation/Homology/AtomFragmentsMap.hpp	(revision 70aeed3b67cffd54c9033b134adc7becc241cdae)
@@ -19,9 +19,11 @@
 #include <list>
 #include <map>
+#include <vector>
 
 #include <boost/serialization/export.hpp>
-#include <boost/serialization/set.hpp>
 #include <boost/serialization/list.hpp>
 #include <boost/serialization/map.hpp>
+#include <boost/serialization/set.hpp>
+#include <boost/serialization/vector.hpp>
 #include <boost/serialization/version.hpp>
 
@@ -52,7 +54,9 @@
   { atommap.clear(); }
 
+  typedef std::vector<atomId_t> indices_t;
   typedef std::list<KeySet> keysets_t;
   //!> typedef for the internal map
   typedef std::map<atomId_t, keysets_t> AtomFragmentsMap_t;
+  typedef std::map<KeySet, indices_t > FragmentFullKeysetMap_t;
 
   /** Getter for full stored map.
@@ -62,4 +66,22 @@
   const AtomFragmentsMap_t& getMap() const
   { return atommap; }
+
+  /** Allows to add the full keyset, with excluded hydrogens, to add
+   * to a given \a _keyset
+   *
+   * \param _keyset keyset to a fragment without hydrogens
+   * \param _fullkeyset full keyset with excluded hydrogens to associate with \a _keyset
+   * \return true - insertion ok, else - index set already present
+   */
+  bool addFullKeyset(const KeySet &_keyset, const indices_t &_fullkeyset);
+
+  /** Getter for the full key set, i.e. including excluded hydrogens, for a
+   * given \a _keyset without them.
+   *
+   * \param _keyset keyset to a fragment without hydrogens
+   * \return full index set containing all keys from \a _keyset and all excluded
+   *         hydrogens
+   */
+  const indices_t &getFullKeyset(const KeySet &_keyset) const;
 
   /** Getter to map cut down to given selection of atoms.
@@ -72,4 +94,11 @@
       const std::vector<atomId_t> &_candidates,
       size_t _MaxOrder) const;
+
+  /** Checks whether we have a full keyset for every keyset contained.
+   *
+   * \return true - is complete, false - else
+   */
+  bool checkCompleteness() const;
+
 private:
   //!> grant singleton pattern access to private cstor/dstor
@@ -87,6 +116,9 @@
 
 private:
-  //!> internal map filled on instantiation
+  //!> internal map associating atoms and fragments
   AtomFragmentsMap_t atommap;
+
+  //!> internal map to get from keyset (without hydrogens) to full keyset, i.e. forcekeyset
+  FragmentFullKeysetMap_t fullkeysets;
 
 private:
@@ -97,4 +129,5 @@
   {
     ar & atommap;
+    ar & fullkeysets;
   }
 };
