Index: src/Dynamics/LinearInterpolationBetweenSteps.hpp
===================================================================
--- src/Dynamics/LinearInterpolationBetweenSteps.hpp	(revision 30c7536948400224f2fc3e945a95099d12c23b3a)
+++ src/Dynamics/LinearInterpolationBetweenSteps.hpp	(revision adb5cda5be52f4f5d63932b345da97b6eade88fd)
@@ -55,9 +55,5 @@
     if (!MapByIdentity) {
       LOG(1, "STATUS: Constructing atom mapping from start to end position.");
-      molecule::atomSet atoms_list;
-      for (typename AtomSetMixin<Set>::const_iterator iter = atoms.begin();
-          iter != atoms.end(); ++iter)
-        atoms_list.insert(*iter);
-      MinimiseConstrainedPotential Minimiser(atoms_list, PermutationMap);
+      MinimiseConstrainedPotential Minimiser(atoms, PermutationMap);
       Minimiser(startstep, endstep, IsAngstroem);
     } else {
Index: src/Dynamics/MinimiseConstrainedPotential.cpp
===================================================================
--- src/Dynamics/MinimiseConstrainedPotential.cpp	(revision 30c7536948400224f2fc3e945a95099d12c23b3a)
+++ src/Dynamics/MinimiseConstrainedPotential.cpp	(revision adb5cda5be52f4f5d63932b345da97b6eade88fd)
@@ -40,5 +40,5 @@
 
 MinimiseConstrainedPotential::MinimiseConstrainedPotential(
-    molecule::atomSet &_atoms,
+    World::AtomComposite &_atoms,
     std::map<atom*, atom *> &_PermutationMap) :
   atoms(_atoms),
@@ -59,5 +59,5 @@
   PermutationMap.clear();
   DoubleList.clear();
-  for (molecule::atomSet::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter) {
+  for (World::AtomComposite::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter) {
     DistanceList[*iter].clear();
   }
@@ -90,5 +90,5 @@
     LOG(2, "Starting round " << ++round << ", at current potential " << OldPotential << " ... ");
     OlderPotential = OldPotential;
-    molecule::atomSet::const_iterator iter;
+    World::AtomComposite::const_iterator iter;
     do {
       iter = atoms.begin();
@@ -105,5 +105,5 @@
         //LOG(2, "Current Walker: " << *(*iter) << " with old/next candidate " << *Sprinter << "/" << *DistanceIterators[(*iter)]->second << ".");
         // find source of the new target
-        molecule::atomSet::const_iterator runner = atoms.begin();
+        World::AtomComposite::const_iterator runner = atoms.begin();
         for (; runner != atoms.end(); ++runner) { // find the source whose toes we might be stepping on (Walker's new target should be in use by another already)
           if (PermutationMap[(*runner)] == DistanceIterators[(*iter)]->second) {
@@ -165,6 +165,6 @@
 void MinimiseConstrainedPotential::FillDistanceList()
 {
-  for (molecule::atomSet::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter) {
-    for (molecule::atomSet::const_iterator runner = atoms.begin(); runner != atoms.end(); ++runner) {
+  for (World::AtomComposite::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter) {
+    for (World::AtomComposite::const_iterator runner = atoms.begin(); runner != atoms.end(); ++runner) {
       DistanceList[(*iter)].insert( DistancePair((*iter)->getPositionAtStep(startstep).distance((*runner)->getPositionAtStep(endstep)), (*runner)) );
     }
@@ -174,5 +174,5 @@
 void MinimiseConstrainedPotential::CreateInitialLists()
 {
-  for (molecule::atomSet::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter) {
+  for (World::AtomComposite::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter) {
     StepList[(*iter)] = DistanceList[(*iter)].begin();    // stores the step to the next iterator that could be a possible next target
     PermutationMap[(*iter)] = DistanceList[(*iter)].begin()->second;   // always pick target with the smallest distance
@@ -185,5 +185,5 @@
 void MinimiseConstrainedPotential::MakeInjectivePermutation()
 {
-  molecule::atomSet::const_iterator iter = atoms.begin();
+  World::AtomComposite::const_iterator iter = atoms.begin();
   DistanceMap::iterator NewBase;
   double Potential = fabs(ConstrainedPotential());
@@ -204,5 +204,5 @@
     Potential = TryNextNearestNeighbourForInjectivePermutation((*iter), Potential);
   }
-  for (molecule::atomSet::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter) {
+  for (World::AtomComposite::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter) {
     // now each single entry in the DoubleList should be <=1
     if (DoubleList[*iter] > 1) {
@@ -216,10 +216,10 @@
 unsigned int MinimiseConstrainedPotential::CalculateDoubleList()
 {
-  for (molecule::atomSet::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter)
+  for (World::AtomComposite::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter)
     DoubleList[*iter] = 0;
   unsigned int doubles = 0;
-  for (molecule::atomSet::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter)
+  for (World::AtomComposite::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter)
       DoubleList[ PermutationMap[*iter] ]++;
-  for (molecule::atomSet::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter)
+  for (World::AtomComposite::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter)
     if (DoubleList[*iter] > 1)
       doubles++;
@@ -235,9 +235,9 @@
   zeile1 << "PermutationMap: ";
   zeile2 << "                ";
-  for (molecule::atomSet::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter) {
+  for (World::AtomComposite::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter) {
     zeile1 << (*iter)->getName() << " ";
     zeile2 << (PermutationMap[*iter])->getName() << " ";
   }
-  for (molecule::atomSet::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter) {
+  for (World::AtomComposite::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter) {
     std::map<atom *, unsigned int>::const_iterator value_iter = DoubleList.find(*iter);
     if (value_iter->second > (unsigned int)1)
@@ -255,5 +255,5 @@
   // go through every atom
   atom *Runner = NULL;
-  for (molecule::atomSet::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter) {
+  for (World::AtomComposite::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter) {
     // first term: distance to target
     Runner = PermutationMap[(*iter)];   // find target point
@@ -299,5 +299,5 @@
 {
   double result = 0.;
-  for (molecule::atomSet::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter) {
+  for (World::AtomComposite::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter) {
     if ((PermutationMap[Walker] == PermutationMap[(*iter)]) && (Walker < (*iter))) {
 //    atom *Sprinter = PermutationMap[Walker->nr];
@@ -324,5 +324,5 @@
   double Norm1, Norm2, tmp, result = 0.;
 
-  for (molecule::atomSet::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter) {
+  for (World::AtomComposite::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter) {
     if ((*iter) == Walker) // hence, we only go up to the Walker, not beyond (similar to i=0; i<j; i++)
       break;
@@ -407,5 +407,5 @@
   /// evaluate forces (only the distance to target dependent part) with the final PermutationMap
   LOG(1, "Calculating forces and adding onto ForceMatrix ... ");
-  for(molecule::atomSet::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter) {
+  for(World::AtomComposite::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter) {
     atom *Sprinter = PermutationMap[(*iter)];
     // set forces
Index: src/Dynamics/MinimiseConstrainedPotential.hpp
===================================================================
--- src/Dynamics/MinimiseConstrainedPotential.hpp	(revision 30c7536948400224f2fc3e945a95099d12c23b3a)
+++ src/Dynamics/MinimiseConstrainedPotential.hpp	(revision adb5cda5be52f4f5d63932b345da97b6eade88fd)
@@ -19,5 +19,5 @@
 #include <map>
 
-#include "molecule.hpp"
+#include "World.hpp"
 
 /** Structure to contain parameters needed for evaluation of constraint potential.
@@ -33,5 +33,5 @@
    * @return
    */
-  MinimiseConstrainedPotential(molecule::atomSet &_atoms, std::map<atom*, atom *> &_PermutationMap);
+  MinimiseConstrainedPotential(World::AtomComposite &_atoms, std::map<atom*, atom *> &_PermutationMap);
 
   /** Destructor.
@@ -79,5 +79,5 @@
   typedef std::pair < DistanceMap::iterator, bool> DistanceTestPair;
 
-  molecule::atomSet atoms;
+  World::AtomComposite atoms;
   int startstep; //!< start configuration (MDStep in atom::trajectory)
   int endstep; //!< end configuration (MDStep in atom::trajectory)
Index: src/Dynamics/VerletForceIntegration.hpp
===================================================================
--- src/Dynamics/VerletForceIntegration.hpp	(revision 30c7536948400224f2fc3e945a95099d12c23b3a)
+++ src/Dynamics/VerletForceIntegration.hpp	(revision adb5cda5be52f4f5d63932b345da97b6eade88fd)
@@ -98,9 +98,5 @@
       // calculate forces and potential
       std::map<atom *, atom*> PermutationMap;
-      molecule::atomSet atoms_list;
-      for (typename AtomSetMixin<T>::const_iterator iter = atoms.begin();
-          iter != atoms.end(); ++iter)
-        atoms_list.insert(*iter);
-      MinimiseConstrainedPotential Minimiser(atoms_list, PermutationMap);
+      MinimiseConstrainedPotential Minimiser(atoms, PermutationMap);
       //double ConstrainedPotentialEnergy =
       Minimiser(DoConstrainedMD, 0, IsAngstroem);
