Index: src/Fragmentation/UniqueFragments.cpp
===================================================================
--- src/Fragmentation/UniqueFragments.cpp	(revision f67817f7834dceb2a5c0a857fa17b2481b42a01b)
+++ src/Fragmentation/UniqueFragments.cpp	(revision d0b375b2180798e3740178ea430700a3329073f6)
@@ -81,6 +81,6 @@
 
 /** Sets FragmenSearch to initial value.
- * Sets UniqueFragments::ShortestPathList entries to zero, UniqueFragments::BondsPerSPCount to zero (except zero level to 1) and
- * adds initial bond UniqueFragments::Root to UniqueFragments::Root to UniqueFragments::BondsPerSPList
+ * Sets UniqueFragments::BondsPerSPCount to zero (except zero level to 1) and adds initial bond
+ * UniqueFragments::Root to UniqueFragments::Root to UniqueFragments::BondsPerSPList
  * \param Order bond order (limits BFS exploration and "number of digits" in power set generation
  * \sa UniqueFragments::FreeSPList()
@@ -88,7 +88,4 @@
 void UniqueFragments::SetSPList(int Order)
 {
-  // prepare Label and SP arrays of the BFS search
-  ShortestPathList[Root->getNr()] = 0;
-
   // prepare root level (SP = 0) and a loop bond denoting Root
   for (int i=Order;i--;)
@@ -99,5 +96,5 @@
 };
 
-/** Resets UniqueFragments::ShortestPathList and cleans bonds from UniqueFragments::BondsPerSPList.
+/** Cleans bonds from UniqueFragments::BondsPerSPList.
  * \param Order bond order (limits BFS exploration and "number of digits" in power set generation
  * \sa UniqueFragments::InitialiseSPList()
@@ -108,11 +105,4 @@
   for(int i=Order;i--;) {
     DoLog(1) && (Log() << Verbose(1) << "Current SP level is " << i << ": ");
-    for (UniqueFragments::BondsPerSP::const_iterator iter = BondsPerSPList[i].begin();
-        iter != BondsPerSPList[i].end();
-        ++iter) {
-      // Log() << Verbose(0) << "Removing atom " << Binder->leftatom->getNr() << " and " << Binder->rightatom->getNr() << "." << endl; // make sure numbers are local
-      ShortestPathList[(*iter)->leftatom->getNr()] = -1;
-      ShortestPathList[(*iter)->rightatom->getNr()] = -1;
-    }
     // delete added bonds
     for (UniqueFragments::BondsPerSP::iterator iter = BondsPerSPList[i].begin();
@@ -183,6 +173,4 @@
           // set the label if not set (and push on root stack as well)
           if ((OtherWalker != Predecessor) && (OtherWalker->GetTrueFather()->getNr() > RootKeyNr)) { // only pass through those with label bigger than Root's
-            ShortestPathList[OtherWalker->getNr()] = SP+1;
-            DoLog(3) && (Log() << Verbose(3) << "Set Shortest Path to " << ShortestPathList[OtherWalker->getNr()] << "." << endl);
             // add the bond in between to the SP list
             Binder = new bond(Walker, OtherWalker); // create a new bond in such a manner, that bond::rightatom is always the one more distant
@@ -239,5 +227,5 @@
  * \param AtomCount number of nodes/atoms
  */
-void UniqueFragments::Init(atom *_Root, size_t AtomCount)
+void UniqueFragments::Init(atom *_Root)
 {
   // initialise the fragments structure
@@ -245,8 +233,4 @@
   FragmentSet = new KeySet;
   Root = _Root;
-  ShortestPathList = new int[AtomCount];
-  for (int i=AtomCount;i--;) {
-    ShortestPathList[i] = -1;
-  }
 }
 
@@ -256,5 +240,4 @@
 void UniqueFragments::Cleanup()
 {
-  delete[](ShortestPathList);
   delete(FragmentSet);
 }
Index: src/Fragmentation/UniqueFragments.hpp
===================================================================
--- src/Fragmentation/UniqueFragments.hpp	(revision f67817f7834dceb2a5c0a857fa17b2481b42a01b)
+++ src/Fragmentation/UniqueFragments.hpp	(revision d0b375b2180798e3740178ea430700a3329073f6)
@@ -42,5 +42,5 @@
   void OutputSPList(int Order);
   int CountNumbersInBondsList(int Order);
-  void Init(atom *_Root, size_t AtomCount);
+  void Init(atom *_Root);
   void Cleanup();
 
@@ -62,5 +62,4 @@
   int ANOVAOrder;
   int CurrentIndex;
-  int *ShortestPathList;
   bool **UsedList;
 };
Index: src/molecule.hpp
===================================================================
--- src/molecule.hpp	(revision f67817f7834dceb2a5c0a857fa17b2481b42a01b)
+++ src/molecule.hpp	(revision d0b375b2180798e3740178ea430700a3329073f6)
@@ -225,5 +225,4 @@
   void FragmentBOSSANOVA(Graph *&FragmentList, KeyStack &RootStack);
   molecule * StoreFragmentFromKeySet(KeySet &Leaflet, bool IsAngstroem);
-  int LookForRemovalCandidate(KeySet *&Leaf, int *&ShortestPathList);
   int GuesstimateFragmentCount(int order);
 
Index: src/molecule_fragmentation.cpp
===================================================================
--- src/molecule_fragmentation.cpp	(revision f67817f7834dceb2a5c0a857fa17b2481b42a01b)
+++ src/molecule_fragmentation.cpp	(revision d0b375b2180798e3740178ea430700a3329073f6)
@@ -516,31 +516,4 @@
 };
 
-
-
-/** Looks through a std::deque<atom *> and returns the likeliest removal candiate.
- * \param *out output stream for debugging messages
- * \param *&Leaf KeySet to look through
- * \param *&ShortestPathList list of the shortest path to decide which atom to suggest as removal candidate in the end
- * \param index of the atom suggested for removal
- */
-int molecule::LookForRemovalCandidate(KeySet *&Leaf, int *&ShortestPathList)
-{
-  atom *Runner = NULL;
-  int SP, Removal;
-
-  DoLog(2) && (Log() << Verbose(2) << "Looking for removal candidate." << endl);
-  SP = -1; //0;  // not -1, so that Root is never removed
-  Removal = -1;
-  for (KeySet::iterator runner = Leaf->begin(); runner != Leaf->end(); runner++) {
-    Runner = FindAtom((*runner));
-    if (Runner->getType()->getAtomicNumber() != 1) { // skip all those added hydrogens when re-filling snake stack
-      if (ShortestPathList[(*runner)] > SP) {  // remove the oldest one with longest shortest path
-        SP = ShortestPathList[(*runner)];
-        Removal = (*runner);
-      }
-    }
-  }
-  return Removal;
-};
 
 /** Initializes some value for putting fragment of \a *mol into \a *Leaf.
@@ -702,5 +675,5 @@
   }
 
-  FragmentSearch.Init(FindAtom(RootKeyNr), getAtomCount());
+  FragmentSearch.Init(FindAtom(RootKeyNr));
 
   // Construct the complete KeySet which we need for topmost level only (but for all Roots)
