Index: src/Actions/FragmentationAction/FragmentationAction.cpp
===================================================================
--- src/Actions/FragmentationAction/FragmentationAction.cpp	(revision d2193329f29f37516b8fd92f15e110a209cdbdf7)
+++ src/Actions/FragmentationAction/FragmentationAction.cpp	(revision 0f59564b447c037fa07eca33fe43bb7420cbb6cc)
@@ -41,4 +41,5 @@
 #include "Descriptors/AtomSelectionDescriptor.hpp"
 #include "Descriptors/MoleculeIdDescriptor.hpp"
+#include "Fragmentation/AdaptivityMap.hpp"
 #include "Fragmentation/Exporters/ExportGraph_ToAtomFragments.hpp"
 #include "Fragmentation/Exporters/ExportGraph_ToFiles.hpp"
@@ -117,5 +118,7 @@
   boost::shared_ptr<AdjacencyList> FileChecker;
   boost::filesystem::path filename(params.prefix.get() + std::string(ADJACENCYFILE));
-  if (boost::filesystem::exists(filename) && boost::filesystem::is_regular_file(filename)) {
+  if ((params.ParseStateFiles.get())
+    && boost::filesystem::exists(filename)
+    && boost::filesystem::is_regular_file(filename)) {
     std::ifstream File;
     File.open(filename.string().c_str(), ios::out);
@@ -140,5 +143,35 @@
   // we parse in the keysets from last time if present
   Graph StoredGraph;
-  StoredGraph.ParseKeySetFile(params.prefix.get());
+  if (params.ParseStateFiles.get()) {
+    StoredGraph.ParseKeySetFile(params.prefix.get());
+    // check parsed graph against the set of atoms
+    {
+      AdaptivityMap *amap = StoredGraph.GraphToAdaptivityMap();
+      bool status = true;
+      for (World::AtomSelectionConstIterator iter = world.beginAtomSelection();
+          iter != world.endAtomSelection(); ++iter) {
+        const atomId_t atomid = iter->second->getId();
+        // skip hydrogens in check if saturation is turned on
+        if ((iter->second->getType()->getAtomicNumber() != 1)
+            || (!params.DoSaturation.get())) {
+          if (amap->count(atomid) == 0) {
+            ELOG(1, "Atom #" << atomid << " not contained in KeySet file. ");
+            status = false;
+            break;
+          }
+        } else if (amap->count(atomid) != 0) {
+          ELOG(1, "Atom #" << atomid << " in KeySet file is a hydrogen, but is now excluded. ");
+          status = false;
+          break;
+        }
+      }
+      delete amap;
+
+      if (!status) {
+        ELOG(1, "KeySetsFile seems to contain leftover from an old fragmentation, hence not using file.");
+        StoredGraph.clear();
+      }
+    }
+  }
 
   start = clock();
@@ -170,5 +203,5 @@
     {
       Graph StoredLocalGraph(StoredGraph.getLocalGraph(mol));
-      const int tempFlag = Fragmenter.FragmentMolecule(mols_atomids, params.order.get(), params.prefix.get(), StoredLocalGraph);
+      const int tempFlag = Fragmenter.FragmentMolecule(mols_atomids, params.order.get(), params.prefix.get(), StoredLocalGraph, params.ParseStateFiles.get());
       if ((ExitFlag == 2) && (tempFlag != 2))
         ExitFlag = tempFlag; // if there is one molecule that needs further fragmentation, it overrides others
Index: src/Actions/FragmentationAction/FragmentationAction.def
===================================================================
--- src/Actions/FragmentationAction/FragmentationAction.def	(revision d2193329f29f37516b8fd92f15e110a209cdbdf7)
+++ src/Actions/FragmentationAction/FragmentationAction.def	(revision 0f59564b447c037fa07eca33fe43bb7420cbb6cc)
@@ -21,9 +21,9 @@
 // ValueStorage by the token "Z" -> first column: int, Z, "Z"
 // "undefine" if no parameters are required, use (NOPARAM_DEFAULT) for each (undefined) default value
-#define paramtypes (std::string)(double)(int)(bool)(bool)(std::vector<std::string>)(unsigned int)(unsigned int)(bool)
-#define paramtokens ("fragment-molecule")("distance")("order")("DoSaturate")("ExcludeHydrogen")("output-types")("grid-level")("inter-order")("DoCyclesFull")
-#define paramdescriptions ("prefix of each fragment file")("distance in space up to which fragments are combined")("order of a discretization, dissection, ...")("do saturate dangling bonds with hydrogen")("whether to exclude hydrogen in the bond graph dissection or not")("type(s) of parsers that output fragment config files")("resolution of density sampling multigrid")("up to which order distinct fragments are combined")("always calculate (aromatic) rings fully, even beyond desired order")
-#define paramdefaults (PARAM_DEFAULT("BondFragment"))(PARAM_DEFAULT(3.))(PARAM_DEFAULT(3))(PARAM_DEFAULT(true))(PARAM_DEFAULT(true))(NOPARAM_DEFAULT)(PARAM_DEFAULT(5))(PARAM_DEFAULT(0))(PARAM_DEFAULT(false))
-#define paramreferences (prefix)(distance)(order)(DoSaturation)(HowtoTreatHydrogen)(types)(level)(InterOrder)(DoCyclesFull)
+#define paramtypes (std::string)(double)(int)(bool)(bool)(std::vector<std::string>)(unsigned int)(unsigned int)(bool)(bool)
+#define paramtokens ("fragment-molecule")("distance")("order")("DoSaturate")("ExcludeHydrogen")("output-types")("grid-level")("inter-order")("DoCyclesFull")("parse-state-files")
+#define paramdescriptions ("prefix of each fragment file")("distance in space up to which fragments are combined")("order of a discretization, dissection, ...")("do saturate dangling bonds with hydrogen")("whether to exclude hydrogen in the bond graph dissection or not")("type(s) of parsers that output fragment config files")("resolution of density sampling multigrid")("up to which order distinct fragments are combined")("always calculate (aromatic) rings fully, even beyond desired order")("whether to parse keysets, orderatsite, adjacency from state files")
+#define paramdefaults (PARAM_DEFAULT("BondFragment"))(PARAM_DEFAULT(3.))(PARAM_DEFAULT(3))(PARAM_DEFAULT(true))(PARAM_DEFAULT(true))(NOPARAM_DEFAULT)(PARAM_DEFAULT(5))(PARAM_DEFAULT(0))(PARAM_DEFAULT(false))(PARAM_DEFAULT(false))
+#define paramreferences (prefix)(distance)(order)(DoSaturation)(HowtoTreatHydrogen)(types)(level)(InterOrder)(DoCyclesFull)(ParseStateFiles)
 #define paramvalids \
 (DummyValidator< std::string >()) \
@@ -35,4 +35,5 @@
 (RangeValidator< unsigned int >(1, 10)) \
 (DummyValidator< unsigned int >()) \
+(DummyValidator< bool >()) \
 (DummyValidator< bool >())
 
Index: src/Fragmentation/Fragmentation.cpp
===================================================================
--- src/Fragmentation/Fragmentation.cpp	(revision d2193329f29f37516b8fd92f15e110a209cdbdf7)
+++ src/Fragmentation/Fragmentation.cpp	(revision 0f59564b447c037fa07eca33fe43bb7420cbb6cc)
@@ -118,5 +118,6 @@
     int Order,
     const std::string &prefix,
-    const Graph &ParsedFragmentList)
+    const Graph &ParsedFragmentList,
+    const bool _ParseStateFile)
 {
   std::fstream File;
@@ -178,5 +179,6 @@
 
   // ===== 4. check globally whether there's something to do actually (first adaptivity check)
-  FragmentationToDo = FragmentationToDo && ParseOrderAtSiteFromFile(atomids, prefix, Global_local_bimap);
+  if (_ParseStateFile)
+    FragmentationToDo = FragmentationToDo && ParseOrderAtSiteFromFile(atomids, prefix, Global_local_bimap);
 
   // =================================== Begin of FRAGMENTATION ===============================
Index: src/Fragmentation/Fragmentation.hpp
===================================================================
--- src/Fragmentation/Fragmentation.hpp	(revision d2193329f29f37516b8fd92f15e110a209cdbdf7)
+++ src/Fragmentation/Fragmentation.hpp	(revision 0f59564b447c037fa07eca33fe43bb7420cbb6cc)
@@ -46,5 +46,5 @@
   ~Fragmentation();
 
-  int FragmentMolecule(const std::vector<atomId_t> &atomids, int Order, const std::string &prefix, const Graph &ParsedFragmentList);
+  int FragmentMolecule(const std::vector<atomId_t> &atomids, int Order, const std::string &prefix, const Graph &ParsedFragmentList, const bool _ParseStateFile);
 
   const Graph& getGraph() const {
Index: tests/Python/AllActions/options.dat
===================================================================
--- tests/Python/AllActions/options.dat	(revision d2193329f29f37516b8fd92f15e110a209cdbdf7)
+++ tests/Python/AllActions/options.dat	(revision 0f59564b447c037fa07eca33fe43bb7420cbb6cc)
@@ -132,4 +132,5 @@
 parse-particle-parameters	"water.particles"
 parse-potentials	"water.potentials"
+parse-state-files	"1"
 parse-tremolo-potentials	"argon.potentials"
 parse-tremolo-potentials	"tensid.potentials"
