Index: src/Actions/FragmentationAction/AnalyseFragmentationResultsAction.cpp
===================================================================
--- src/Actions/FragmentationAction/AnalyseFragmentationResultsAction.cpp	(revision bcc24f3331f404054b4559cb50752f58140b3dd0)
+++ src/Actions/FragmentationAction/AnalyseFragmentationResultsAction.cpp	(revision 98dbee850caead4ba8e84808ca18dad7c31efa86)
@@ -220,12 +220,9 @@
 }
 
-bool appendToHomologyFile(
-    const boost::filesystem::path &homology_file,
-    const FragmentationShortRangeResults &shortrangeresults,
-    const FragmentationLongRangeResults &longrangeresults
+void parseHomologiesFromFile(
+    const boost::filesystem::path &homology_file
     )
 {
-  /// read homology container (if present)
-  HomologyContainer homology_container;
+  HomologyContainer &homology_container = World::getInstance().getHomologies();
   if (boost::filesystem::exists(homology_file)) {
     std::ifstream returnstream(homology_file.string().c_str());
@@ -241,4 +238,13 @@
         << ", creating empty container.");
   }
+}
+
+void appendToHomologies(
+    const FragmentationShortRangeResults &shortrangeresults,
+    const FragmentationLongRangeResults &longrangeresults
+    )
+{
+  /// read homology container (if present)
+  HomologyContainer &homology_container = World::getInstance().getHomologies();
 
   /// append all fragments to a HomologyContainer
@@ -300,6 +306,12 @@
     }
   }
-
+}
+
+bool writeHomologiesToFile(
+    const boost::filesystem::path &homology_file
+    )
+{
   /// store homology container again
+  HomologyContainer &homology_container = World::getInstance().getHomologies();
   std::ofstream outputstream(homology_file.string().c_str());
   if (outputstream.good()) { // check if opened
@@ -414,9 +426,12 @@
 
     // append all keysets to homology file
+    appendToHomologies(shortrangeresults, longrangeresults);
     if (!params.homology_file.get().empty()) {
       const boost::filesystem::path &homology_file = params.homology_file.get();
       if (homology_file.string() != "") {
+        LOG(1, "INFO: Parsing HomologyGraphs from file " << homology_file.string() << ".");
+        parseHomologiesFromFile(homology_file);
         LOG(1, "INFO: Appending HomologyGraphs to file " << homology_file.string() << ".");
-        if (!appendToHomologyFile(homology_file, shortrangeresults, longrangeresults))
+        if (!writeHomologiesToFile(homology_file))
           return Action::failure;
       }
Index: src/World.cpp
===================================================================
--- src/World.cpp	(revision bcc24f3331f404054b4559cb50752f58140b3dd0)
+++ src/World.cpp	(revision 98dbee850caead4ba8e84808ca18dad7c31efa86)
@@ -55,4 +55,5 @@
 #include "Descriptors/SelectiveIterator_impl.hpp"
 #include "Element/periodentafel.hpp"
+#include "Fragmentation/Homology/HomologyContainer.hpp"
 #include "Graph/BondGraph.hpp"
 #include "Graph/DepthFirstSearchAnalysis.hpp"
@@ -90,4 +91,21 @@
 {
   return BG;
+}
+
+HomologyContainer &World::getHomologies()
+{
+  return *homologies;
+}
+
+void World::resetHomologies(HomologyContainer *&_homologies)
+{
+  HomologyContainer *oldhomologies = homologies;
+
+  // install new instance, resetting given pointer
+  homologies = _homologies;
+  _homologies = NULL;
+
+  // delete old instance which also informs all observers
+  delete oldhomologies;
 }
 
@@ -769,4 +787,5 @@
     periode(new periodentafel(true)),
     configuration(new config),
+    homologies(new HomologyContainer()),
     Thermostats(new ThermoStatContainer),
     ExitFlag(0),
Index: src/World.hpp
===================================================================
--- src/World.hpp	(revision bcc24f3331f404054b4559cb50752f58140b3dd0)
+++ src/World.hpp	(revision 98dbee850caead4ba8e84808ca18dad7c31efa86)
@@ -46,4 +46,5 @@
 class Box;
 class config;
+class HomologyContainer;
 class RealSpaceMatrix;
 class molecule;
@@ -142,4 +143,17 @@
    */
   void setBondGraph(BondGraph *_BG);
+
+  /** Getter for homology container.
+   *
+   * \return const reference to homology container.
+   */
+  HomologyContainer &getHomologies();
+
+  /** Setter for homology container.
+   *
+   * \param homologies reference to homologies, set to NULL
+   */
+  void resetHomologies(HomologyContainer *&homologies);
+
   /**
    * returns the configuration for the world.
@@ -455,4 +469,5 @@
   periodentafel *periode;
   config *configuration;
+  HomologyContainer *homologies;
   Box *cell_size;
   LinkedCell::LinkedCell_Controller *LCcontroller;
