Index: src/Actions/FragmentationAction/SubgraphDissectionAction.cpp
===================================================================
--- src/Actions/FragmentationAction/SubgraphDissectionAction.cpp	(revision 31fb1df09428e7671debb5867061ee049cbbd546)
+++ src/Actions/FragmentationAction/SubgraphDissectionAction.cpp	(revision 2b7d1b4a8971f8404e446082f8f129a126eb6922)
@@ -24,4 +24,5 @@
 #include "molecule.hpp"
 #include "stackclass.hpp"
+#include "verbose.hpp"
 #include "World.hpp"
 
@@ -44,4 +45,6 @@
 {}
 
+/** Dissects given \a *mol into connected subgraphs and inserts them as new molecules but with old atoms into \a this.
+ */
 void FragmentationSubgraphDissection() {
   ActionRegistry::getInstance().getActionByName(FragmentationSubgraphDissectionAction::NAME)->call(Action::NonInteractive);
@@ -59,5 +62,5 @@
 Action::state_ptr FragmentationSubgraphDissectionAction::performCall() {
   DoLog(1) && (Log() << Verbose(1) << "Dissecting molecular system into a set of disconnected subgraphs ... " << endl);
-  // @TODO rather do the dissection afterwards
+
   MoleculeListClass *molecules = World::getInstance().getMolecules();
   config * const configuration = World::getInstance().getConfig();
@@ -101,4 +104,5 @@
     return Action::failure;
   }
+<<<<<<< HEAD
 
   // 3. dissect (the following construct is needed to have the atoms not in the order of the DFS, but in
@@ -143,12 +147,23 @@
   // TODO: When DepthFirstSearchAnalysis does not use AddCopyAtom() anymore, we don't need to delete all original atoms.
   // 4d. destroy the original molecule
+=======
+  int FragmentCounter = Subgraphs->Count();
+
+  // TODO: When DepthFirstSearchAnalysis does not use AddCopyAtom() anymore, we don't need to delete all original atoms
+  // 3. destroy the original molecule
+>>>>>>> Merged MoleculeListClass::DissectMoleculeIntoConnectedSubgraphs() into FragmenationSubgraphDissectionAction.
   for (molecule::iterator AtomRunner = mol->begin(); !mol->empty(); AtomRunner = mol->begin())
     World::getInstance().destroyAtom(*AtomRunner);
   World::getInstance().destroyMolecule(mol);
 
+<<<<<<< HEAD
   // 4d. we don't need to redo bonds, as they are connected subgraphs and still maintain their ListOfBonds, but we have to remove them from first..last list
   // TODO: check whether this is really not needed anymore
   // 4e. free Leafs
   MolecularWalker = Subgraphs;
+=======
+  // 4. free Leafs
+  MoleculeLeafClass *MolecularWalker = Subgraphs;
+>>>>>>> Merged MoleculeListClass::DissectMoleculeIntoConnectedSubgraphs() into FragmenationSubgraphDissectionAction.
   while (MolecularWalker->next != NULL) {
     MolecularWalker = MolecularWalker->next;
@@ -156,5 +171,8 @@
   }
   delete(MolecularWalker);
+<<<<<<< HEAD
   delete[](moleculelist);
+=======
+>>>>>>> Merged MoleculeListClass::DissectMoleculeIntoConnectedSubgraphs() into FragmenationSubgraphDissectionAction.
   DoLog(1) && (Log() << Verbose(1) << "I scanned " << FragmentCounter << " molecules." << endl);
 
Index: src/Parser/PcpParser.cpp
===================================================================
--- src/Parser/PcpParser.cpp	(revision 31fb1df09428e7671debb5867061ee049cbbd546)
+++ src/Parser/PcpParser.cpp	(revision 2b7d1b4a8971f8404e446082f8f129a126eb6922)
@@ -16,4 +16,5 @@
 #include <iomanip>
 
+//#include "Actions/FragmentationAction/SubgraphDissectionAction.hpp"
 #include "atom.hpp"
 #include "config.hpp"
@@ -356,5 +357,5 @@
   // 4. dissect the molecule into connected subgraphs
   // don't do this here ...
-  //MolList->DissectMoleculeIntoConnectedSubgraphs(mol,this);
+  //FragmentationSubgraphDissection();
   //delete(mol);
 
Index: src/config.cpp
===================================================================
--- src/config.cpp	(revision 31fb1df09428e7671debb5867061ee049cbbd546)
+++ src/config.cpp	(revision 2b7d1b4a8971f8404e446082f8f129a126eb6922)
@@ -15,4 +15,5 @@
 #include <cstring>
 
+//#include "Actions/FragmentationAction/SubgraphDissectionAction.hpp"
 #include "atom.hpp"
 #include "bond.hpp"
@@ -856,5 +857,5 @@
   // 4. dissect the molecule into connected subgraphs
   // don't do this here ...
-  //MolList->DissectMoleculeIntoConnectedSubgraphs(mol,this);
+  //FragmentationSubgraphDissection();
   //delete(mol);
 
Index: src/molecule.hpp
===================================================================
--- src/molecule.hpp	(revision 31fb1df09428e7671debb5867061ee049cbbd546)
+++ src/molecule.hpp	(revision 2b7d1b4a8971f8404e446082f8f129a126eb6922)
@@ -367,5 +367,4 @@
   void Enumerate(ostream *out);
   void Output(ofstream *out);
-  void DissectMoleculeIntoConnectedSubgraphs(const periodentafel * const periode, config * const configuration);
   int CountAllAtoms() const;
 
Index: src/moleculelist.cpp
===================================================================
--- src/moleculelist.cpp	(revision 31fb1df09428e7671debb5867061ee049cbbd546)
+++ src/moleculelist.cpp	(revision 2b7d1b4a8971f8404e446082f8f129a126eb6922)
@@ -585,103 +585,4 @@
 };
 
-/** Dissects given \a *mol into connected subgraphs and inserts them as new molecules but with old atoms into \a this.
- * \param *out output stream for debugging
- * \param *periode periodentafel
- * \param *configuration config with BondGraph
- */
-void MoleculeListClass::DissectMoleculeIntoConnectedSubgraphs(const periodentafel * const periode, config * const configuration)
-{
-  // 0a. remove all present molecules
-  vector<molecule *> allmolecules = World::getInstance().getAllMolecules();
-  for (vector<molecule *>::iterator MolRunner = allmolecules.begin(); MolRunner != allmolecules.end(); ++MolRunner) {
-    erase(*MolRunner);
-    World::getInstance().destroyMolecule(*MolRunner);
-  }
-  // 0b. remove all bonds and construct a molecule with all atoms
-  molecule *mol = World::getInstance().createMolecule();
-  vector <atom *> allatoms = World::getInstance().getAllAtoms();
-  for(vector<atom *>::iterator AtomRunner = allatoms.begin(); AtomRunner != allatoms.end(); ++AtomRunner) {
-    for(BondList::iterator BondRunner = (*AtomRunner)->ListOfBonds.begin(); !(*AtomRunner)->ListOfBonds.empty(); BondRunner = (*AtomRunner)->ListOfBonds.begin())
-      delete(*BondRunner);
-    mol->AddAtom(*AtomRunner);
-  }
-
-  // 1. dissect the molecule into connected subgraphs
-  if (configuration->BG != NULL) {
-    if (!configuration->BG->ConstructBondGraph(mol)) {
-      World::getInstance().destroyMolecule(mol);
-      DoeLog(1) && (eLog()<< Verbose(1) << "There are no bonds." << endl);
-      return;
-    }
-  } else {
-    DoeLog(1) && (eLog()<< Verbose(1) << "There is no BondGraph class present to create bonds." << endl);
-    return;
-  }
-
-  // 2. scan for connected subgraphs
-  MoleculeLeafClass *Subgraphs = NULL;      // list of subgraphs from DFS analysis
-  class StackClass<bond *> *BackEdgeStack = NULL;
-  Subgraphs = mol->DepthFirstSearchAnalysis(BackEdgeStack);
-  delete(BackEdgeStack);
-  if ((Subgraphs == NULL) || (Subgraphs->next == NULL)) {
-    World::getInstance().destroyMolecule(mol);
-    DoeLog(1) && (eLog()<< Verbose(1) << "There are no atoms." << endl);
-    return;
-  }
-
-  // 3. dissect (the following construct is needed to have the atoms not in the order of the DFS, but in
-  // the original one as parsed in)
-  // TODO: Optimize this, when molecules just contain pointer list of global atoms!
-
-  // 4a. create array of molecules to fill
-  const int MolCount = Subgraphs->next->Count();
-  char number[MAXSTRINGSIZE];
-  molecule **molecules = new molecule *[MolCount];
-  MoleculeLeafClass *MolecularWalker = Subgraphs;
-  for (int i=0;i<MolCount;i++) {
-    MolecularWalker = MolecularWalker->next;
-    molecules[i] = World::getInstance().createMolecule();
-    molecules[i]->ActiveFlag = true;
-    strncpy(molecules[i]->name, mol->name, MAXSTRINGSIZE);
-    if (MolCount > 1) {
-      sprintf(number, "-%d", i+1);
-      strncat(molecules[i]->name, number, MAXSTRINGSIZE - strlen(mol->name) - 1);
-    }
-    DoLog(1) && (Log() << Verbose(1) << "MolName is " << molecules[i]->name << ", id is " << molecules[i]->getId() << endl);
-    for (molecule::iterator iter = MolecularWalker->Leaf->begin(); iter != MolecularWalker->Leaf->end(); ++iter) {
-      DoLog(1) && (Log() << Verbose(1) << **iter << endl);
-    }
-    insert(molecules[i]);
-  }
-
-  // 4b. create and fill map of which atom is associated to which connected molecule (note, counting starts at 1)
-  int FragmentCounter = 0;
-  map<int, atom *> AtomToFragmentMap;
-  MolecularWalker = Subgraphs;
-  while (MolecularWalker->next != NULL) {
-    MolecularWalker = MolecularWalker->next;
-    for (molecule::iterator iter = MolecularWalker->Leaf->begin(); !MolecularWalker->Leaf->empty(); iter = MolecularWalker->Leaf->begin()) {
-      atom * Walker = *iter;
-      DoLog(1) && (Log() << Verbose(1) << "Re-linking " << Walker << "..." << endl);
-      MolecularWalker->Leaf->erase(iter);
-      molecules[FragmentCounter]->AddAtom(Walker);    // counting starts at 1
-    }
-    FragmentCounter++;
-  }
-  World::getInstance().destroyMolecule(mol);
-
-  // 4d. we don't need to redo bonds, as they are connected subgraphs and still maintain their ListOfBonds, but we have to remove them from first..last list
-  // TODO: check whether this is really not needed anymore
-  // 4e. free Leafs
-  MolecularWalker = Subgraphs;
-  while (MolecularWalker->next != NULL) {
-    MolecularWalker = MolecularWalker->next;
-    delete(MolecularWalker->previous);
-  }
-  delete(MolecularWalker);
-  delete[](molecules);
-  DoLog(1) && (Log() << Verbose(1) << "I scanned " << FragmentCounter << " molecules." << endl);
-};
-
 /** Count all atoms in each molecule.
  * \return number of atoms in the MoleculeListClass.
