Index: src/Actions/FragmentationAction/MolecularDynamicsAction.cpp
===================================================================
--- src/Actions/FragmentationAction/MolecularDynamicsAction.cpp	(revision a91710c7feb7eb12c5521615d53366bd9ac68106)
+++ src/Actions/FragmentationAction/MolecularDynamicsAction.cpp	(revision 553c546a9212dd6cedc74651403cde0e33e0c47f)
@@ -65,4 +65,7 @@
   actions.addAction(AR.getActionByName(std::string("output")));
   actions.addAction(AR.getActionByName(std::string("clear-fragment-results")));
+  actions.addAction(AR.getActionByName(std::string("destroy-adjacency")));
+  actions.addAction(AR.getActionByName(std::string("create-adjacency")));
+  actions.addAction(AR.getActionByName(std::string("update-molecules")));
   actions.addAction(AR.getActionByName(std::string("fragment-molecule")));
   actions.addAction(AR.getActionByName(std::string("fragment-automation")));
@@ -91,4 +94,24 @@
         "FragmentationMolecularDynamicsAction::performCall() - output not found in ActionSequence.");
   }
+  // don't recreate bond graph if not desired
+  if (params.DontCreateGraphEachStep.get()) {
+#ifndef NDEBUG
+    bool status = true;
+    status &=
+#endif
+        removeAction(std::string("destroy-adjacency"));
+
+#ifndef NDEBUG
+    status &=
+#endif
+        removeAction(std::string("create-adjacency"));
+
+#ifndef NDEBUG
+    status &=
+#endif
+        removeAction(std::string("update-molecules"));
+    ASSERT( status,
+        "FragmentationStructuralOptimizationAction::performCall() - at least one graph action not found in ActionSequence.");
+  }
   // and call
   ActionState::ptr state(MakroAction::performCall());
Index: src/Actions/FragmentationAction/MolecularDynamicsAction.def
===================================================================
--- src/Actions/FragmentationAction/MolecularDynamicsAction.def	(revision a91710c7feb7eb12c5521615d53366bd9ac68106)
+++ src/Actions/FragmentationAction/MolecularDynamicsAction.def	(revision 553c546a9212dd6cedc74651403cde0e33e0c47f)
@@ -12,11 +12,12 @@
 // 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 (unsigned int)(bool)
-#define paramtokens ("steps")("output-every-step")
-#define paramdescriptions ("numer of MD steps to perform")("whether World should be written after every step, useful if integration might hang")
-#define paramdefaults (NOPARAM_DEFAULT)(PARAM_DEFAULT("0"))
-#define paramreferences (steps)(DoOutput)
+#define paramtypes (unsigned int)(bool)(bool)
+#define paramtokens ("steps")("output-every-step")("keep-bondgraph")
+#define paramdescriptions ("numer of MD steps to perform")("whether World should be written after every step, useful if integration might hang")("whether the bond graph should be kept the same during each step and not updated")
+#define paramdefaults (NOPARAM_DEFAULT)(PARAM_DEFAULT("0"))(PARAM_DEFAULT("0"))
+#define paramreferences (steps)(DoOutput)(DontCreateGraphEachStep)
 #define paramvalids \
 (NotZeroValidator< unsigned int >()) \
+(DummyValidator<bool>()) \
 (DummyValidator<bool>())
 
Index: src/Actions/FragmentationAction/StructuralOptimizationAction.cpp
===================================================================
--- src/Actions/FragmentationAction/StructuralOptimizationAction.cpp	(revision a91710c7feb7eb12c5521615d53366bd9ac68106)
+++ src/Actions/FragmentationAction/StructuralOptimizationAction.cpp	(revision 553c546a9212dd6cedc74651403cde0e33e0c47f)
@@ -62,4 +62,7 @@
   // present. If not, we still copy the position cleanly into a new step where then
   // forces are set according to summed fragmentary contributions. This is much cleaner.
+  actions.addAction(AR.getActionByName(std::string("destroy-adjacency")));
+  actions.addAction(AR.getActionByName(std::string("create-adjacency")));
+  actions.addAction(AR.getActionByName(std::string("update-molecules")));
   actions.addAction(AR.getActionByName(std::string("fragment-molecule")));
   actions.addAction(AR.getActionByName(std::string("fragment-automation")));
@@ -91,4 +94,24 @@
         "FragmentationStructuralOptimizationAction::performCall() - output not found in ActionSequence.");
   }
+  // don't recreate bond graph if not desired
+  if (params.DontCreateGraphEachStep.get()) {
+#ifndef NDEBUG
+    bool status = true;
+    status &=
+#endif
+        removeAction(std::string("destroy-adjacency"));
+
+#ifndef NDEBUG
+    status &=
+#endif
+        removeAction(std::string("create-adjacency"));
+
+#ifndef NDEBUG
+    status &=
+#endif
+        removeAction(std::string("update-molecules"));
+    ASSERT( status,
+        "FragmentationStructuralOptimizationAction::performCall() - at least one graph action not found in ActionSequence.");
+  }
   // and call
   ActionState::ptr state(MakroAction::performCall());
Index: src/Actions/FragmentationAction/StructuralOptimizationAction.def
===================================================================
--- src/Actions/FragmentationAction/StructuralOptimizationAction.def	(revision a91710c7feb7eb12c5521615d53366bd9ac68106)
+++ src/Actions/FragmentationAction/StructuralOptimizationAction.def	(revision 553c546a9212dd6cedc74651403cde0e33e0c47f)
@@ -12,11 +12,12 @@
 // 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 (unsigned int)(bool)
-#define paramtokens ("steps")("output-every-step")
-#define paramdescriptions ("numer of MD steps to perform")("whether we should update the timestep in each descent step sp as to visualize the minimisation")
-#define paramdefaults (NOPARAM_DEFAULT)(PARAM_DEFAULT("0"))
-#define paramreferences (steps)(DoOutput)
+#define paramtypes (unsigned int)(bool)(bool)
+#define paramtokens ("steps")("output-every-step")("keep-bondgraph")
+#define paramdescriptions ("numer of MD steps to perform")("whether we should update the timestep in each descent step sp as to visualize the minimisation")("whether the bond graph should be kept the same during each step and not updated")
+#define paramdefaults (NOPARAM_DEFAULT)(PARAM_DEFAULT("0"))(PARAM_DEFAULT("0"))
+#define paramreferences (steps)(DoOutput)(DontCreateGraphEachStep)
 #define paramvalids \
 (NotZeroValidator< unsigned int >()) \
+(DummyValidator<bool>()) \
 (DummyValidator<bool>())
 
