Index: src/Makefile.am
===================================================================
--- src/Makefile.am	(revision 4422186ce5812cc3d3934d314a917aef810dc888)
+++ src/Makefile.am	(revision 4d9c01f8014759f2f19a4f8d375d102f00f3be13)
@@ -27,5 +27,5 @@
 # deleted once everything is fully refactored
 LEGACYSOURCE = Legacy/oldmenu.cpp 
-LEGACYHEADER = Legacy/oldmenu.hpp
+LEGACYHEADER = Legacy/oldmenu.hpp Legacy/WorldContent.hpp Legacy/WorldContent_impl.hpp
 
 SOURCE = ${ANALYSISSOURCE} ${ATOMSOURCE} ${PATTERNSOURCE} ${UISOURCE} ${LEGACYSOURCE} bond.cpp bondgraph.cpp boundary.cpp config.cpp element.cpp ellipsoid.cpp errorlogger.cpp graph.cpp helpers.cpp info.cpp leastsquaremin.cpp linkedcell.cpp log.cpp logger.cpp memoryusageobserver.cpp moleculelist.cpp molecule.cpp molecule_dynamics.cpp molecule_fragmentation.cpp molecule_geometry.cpp molecule_graph.cpp molecule_pointcloud.cpp parser.cpp periodentafel.cpp tesselation.cpp tesselationhelpers.cpp vector.cpp verbose.cpp World.cpp 
@@ -42,12 +42,13 @@
 libgslwrapper_a_SOURCES = ${LINALGSOURCE} ${LINALGHEADER}
 molecuilder_DATA = elements.db valence.db orbitals.db Hbonddistance.db Hbondangle.db
-molecuilder_LDFLAGS = $(BOOST_LIB)
-#molecuilder_CXXFLAGS = -DNO_CACHING
+molecuilder_LDFLAGS = $(BOOST_LDFLAGS)
+molecuilder_CXXFLAGS = $(BOOST_CPPFLAGS)
+#molecuilder_CXXFLAGS += -DNO_CACHING
 molecuilder_SOURCES = builder.cpp
-molecuilder_LDADD = libmolecuilder.a libgslwrapper.a
+molecuilder_LDADD = libmolecuilder.a libgslwrapper.a $(BOOST_LIB) ${BOOST_THREAD_LIB}
 joiner_SOURCES = joiner.cpp datacreator.cpp parser.cpp datacreator.hpp helpers.hpp parser.hpp periodentafel.hpp
-joiner_LDADD = libmolecuilder.a 
+joiner_LDADD = libmolecuilder.a $(BOOST_LIB) ${BOOST_THREAD_LIB}
 analyzer_SOURCES = analyzer.cpp datacreator.cpp parser.cpp helpers.hpp periodentafel.hpp parser.hpp datacreator.hpp 
-analyzer_LDADD = libmolecuilder.a 
+analyzer_LDADD = libmolecuilder.a $(BOOST_LIB) ${BOOST_THREAD_LIB}
 
 #EXTRA_DIST = ${molecuilder_DATA}
Index: src/World.cpp
===================================================================
--- src/World.cpp	(revision 4422186ce5812cc3d3934d314a917aef810dc888)
+++ src/World.cpp	(revision 4d9c01f8014759f2f19a4f8d375d102f00f3be13)
@@ -8,4 +8,6 @@
 #include "World.hpp"
 
+#include <iostream>
+
 /******************************* getter and setter ************************/
 periodentafel* World::getPeriode(){
@@ -15,5 +17,8 @@
 /******************************* Singleton Stuff **************************/
 
+// TODO: Hide boost-thread using Autotools stuff when no threads are used
 World* World::theWorld = 0;
+boost::mutex World::worldLock;
+
 
 
@@ -67,2 +72,8 @@
   return molecules;
 }
+
+
+// methods for WorldContent CRTP mechanism
+void World::registerContent(atom *atom){
+  std::cout << "############### some kind of Atom created ##################" << std::endl;
+}
Index: src/World.hpp
===================================================================
--- src/World.hpp	(revision 4422186ce5812cc3d3934d314a917aef810dc888)
+++ src/World.hpp	(revision 4d9c01f8014759f2f19a4f8d375d102f00f3be13)
@@ -17,4 +17,5 @@
 class periodentafel;
 class MoleculeListClass;
+class atom;
 
 class World : public Observable
@@ -49,4 +50,7 @@
 public:
   MoleculeListClass *getMolecules();
+
+  // functions used for the WorldContent template mechanism
+  void registerContent(atom *theAtom);
 private:
   MoleculeListClass *molecules;
Index: src/unittests/Makefile.am
===================================================================
--- src/unittests/Makefile.am	(revision 4422186ce5812cc3d3934d314a917aef810dc888)
+++ src/unittests/Makefile.am	(revision 4d9c01f8014759f2f19a4f8d375d102f00f3be13)
@@ -35,72 +35,75 @@
 noinst_PROGRAMS = $(TESTS)
 
+GSLLIBS = ../libgslwrapper.a
+ALLLIBS = ../libmolecuilder.a ${GSLLIBS} $(BOOST_LIB) ${BOOST_THREAD_LIB}
+
 ActOnAllUnitTest_SOURCES = ../test/ActOnAllTest.hpp ActOnAllUnitTest.cpp ActOnAllUnitTest.hpp
-ActOnAllUnitTest_LDADD = ../libmolecuilder.a ../libgslwrapper.a
+ActOnAllUnitTest_LDADD = ${ALLLIBS}
 
 AnalysisBondsUnitTests_SOURCES = analysisbondsunittest.cpp analysisbondsunittest.hpp
-AnalysisBondsUnitTests_LDADD = ../libmolecuilder.a ../libgslwrapper.a
+AnalysisBondsUnitTests_LDADD = ${ALLLIBS}
 
 AnalysisCorrelationToPointUnitTest_SOURCES = analysis_correlation.hpp AnalysisCorrelationToPointUnitTest.cpp AnalysisCorrelationToPointUnitTest.hpp
-AnalysisCorrelationToPointUnitTest_LDADD = ../libmolecuilder.a ../libgslwrapper.a
+AnalysisCorrelationToPointUnitTest_LDADD = ${ALLLIBS}
 
 AnalysisCorrelationToSurfaceUnitTest_SOURCES = analysis_correlation.hpp AnalysisCorrelationToSurfaceUnitTest.cpp AnalysisCorrelationToSurfaceUnitTest.hpp
-AnalysisCorrelationToSurfaceUnitTest_LDADD = ../libmolecuilder.a ../libgslwrapper.a
+AnalysisCorrelationToSurfaceUnitTest_LDADD = ${ALLLIBS}
 
 AnalysisPairCorrelationUnitTest_SOURCES = analysis_correlation.hpp AnalysisPairCorrelationUnitTest.cpp AnalysisPairCorrelationUnitTest.hpp
-AnalysisPairCorrelationUnitTest_LDADD = ../libmolecuilder.a ../libgslwrapper.a
+AnalysisPairCorrelationUnitTest_LDADD = ${ALLLIBS}
 
 BondGraphUnitTest_SOURCES = bondgraphunittest.cpp bondgraphunittest.hpp
-BondGraphUnitTest_LDADD = ../libmolecuilder.a ../libgslwrapper.a
+BondGraphUnitTest_LDADD = ${ALLLIBS}
 
 GSLMatrixSymmetricUnitTest_SOURCES = gslmatrixsymmetricunittest.cpp gslmatrixsymmetricunittest.hpp
-GSLMatrixSymmetricUnitTest_LDADD = ../libgslwrapper.a
+GSLMatrixSymmetricUnitTest_LDADD = ${GSLLIBS}
 
 GSLMatrixUnitTest_SOURCES = gslmatrixunittest.cpp gslmatrixunittest.hpp
-GSLMatrixUnitTest_LDADD = ../libgslwrapper.a
+GSLMatrixUnitTest_LDADD = ${GSLLIBS}
 
 GSLVectorUnitTest_SOURCES = gslvectorunittest.cpp gslvectorunittest.hpp
-GSLVectorUnitTest_LDADD = ../libgslwrapper.a
+GSLVectorUnitTest_LDADD = ${GSLLIBS}
 
 InfoUnitTest_SOURCES = infounittest.cpp infounittest.hpp
-InfoUnitTest_LDADD = ../libmolecuilder.a ../libgslwrapper.a
+InfoUnitTest_LDADD = ${ALLLIBS}
 
 LinearSystemOfEquationsUnitTest_SOURCES = linearsystemofequationsunittest.cpp linearsystemofequationsunittest.hpp
-LinearSystemOfEquationsUnitTest_LDADD = ../libgslwrapper.a ../libmolecuilder.a
+LinearSystemOfEquationsUnitTest_LDADD = ${ALLLIBS}
 
 ListOfBondsUnitTest_SOURCES = listofbondsunittest.cpp listofbondsunittest.hpp
-ListOfBondsUnitTest_LDADD = ../libmolecuilder.a ../libgslwrapper.a
+ListOfBondsUnitTest_LDADD = ${ALLLIBS}
 
 LogUnitTest_SOURCES = logunittest.cpp logunittest.hpp 
-LogUnitTest_LDADD = ../libmolecuilder.a ../libgslwrapper.a
+LogUnitTest_LDADD = ${ALLLIBS}
 
 MemoryAllocatorUnitTest_SOURCES = memoryallocatorunittest.cpp memoryallocatorunittest.hpp 
-MemoryAllocatorUnitTest_LDADD = ../libmolecuilder.a ../libgslwrapper.a
+MemoryAllocatorUnitTest_LDADD = ${ALLLIBS}
 
 MemoryUsageObserverUnitTest_SOURCES = memoryusageobserverunittest.cpp memoryusageobserverunittest.hpp 
-MemoryUsageObserverUnitTest_LDADD = ../libmolecuilder.a ../libgslwrapper.a
+MemoryUsageObserverUnitTest_LDADD = ${ALLLIBS}
 
 StackClassUnitTest_SOURCES = stackclassunittest.cpp stackclassunittest.hpp
-StackClassUnitTest_LDADD = ../libmolecuilder.a ../libgslwrapper.a
+StackClassUnitTest_LDADD = ${ALLLIBS}
 
 TesselationUnitTest_SOURCES = tesselationunittest.cpp tesselationunittest.hpp
-TesselationUnitTest_LDADD = ../libmolecuilder.a ../libgslwrapper.a
+TesselationUnitTest_LDADD = ${ALLLIBS}
 
 Tesselation_BoundaryTriangleUnitTest_SOURCES = tesselation_boundarytriangleunittest.cpp tesselation_boundarytriangleunittest.hpp
-Tesselation_BoundaryTriangleUnitTest_LDADD = ../libmolecuilder.a ../libgslwrapper.a
+Tesselation_BoundaryTriangleUnitTest_LDADD = ${ALLLIBS}
 
 Tesselation_InOutsideUnitTest_SOURCES = tesselation_insideoutsideunittest.cpp tesselation_insideoutsideunittest.hpp
-Tesselation_InOutsideUnitTest_LDADD = ../libmolecuilder.a ../libgslwrapper.a
+Tesselation_InOutsideUnitTest_LDADD = ${ALLLIBS}
 
 VectorUnitTest_SOURCES = vectorunittest.cpp vectorunittest.hpp 
-VectorUnitTest_LDADD = ../libmolecuilder.a ../libgslwrapper.a
+VectorUnitTest_LDADD = ${ALLLIBS}
 
 ActionSequenceTest_SOURCES = ActionSequenceTest.cpp ActionSequenceTest.hpp
-ActionSequenceTest_LDADD = ../libmolecuilder.a
+ActionSequenceTest_LDADD = ${ALLLIBS}
 
 ObserverTest_SOURCES = ObserverTest.cpp ObserverTest.hpp
-ObserverTest_LDADD = ../libmolecuilder.a
+ObserverTest_LDADD = ${ALLLIBS}
 
 CacheableTest_SOURCES = CacheableTest.cpp CacheableTest.hpp
-CacheableTest_LDADD = ../libmolecuilder.a
+CacheableTest_LDADD = ${ALLLIBS}
 
 #AUTOMAKE_OPTIONS = parallel-tests
