Index: src/unittests/AnalysisCorrelationToPointUnitTest.cpp
===================================================================
--- src/unittests/AnalysisCorrelationToPointUnitTest.cpp	(revision 677e130f3cbb80cdb1d7c6766dd729592710cd05)
+++ src/unittests/AnalysisCorrelationToPointUnitTest.cpp	(revision d74077614bf2a27f66c91bf6bce70250442a0463)
@@ -53,18 +53,18 @@
   TestMolecule = World::getInstance().createMolecule();
   Walker = World::getInstance().createAtom();
-  Walker->type = hydrogen;
-  *Walker->node = Vector(1., 0., 1. );
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(1., 0., 1. ));
   TestMolecule->AddAtom(Walker);
   Walker = World::getInstance().createAtom();
-  Walker->type = hydrogen;
-  *Walker->node = Vector(0., 1., 1. );
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(0., 1., 1. ));
   TestMolecule->AddAtom(Walker);
   Walker = World::getInstance().createAtom();
-  Walker->type = hydrogen;
-  *Walker->node = Vector(1., 1., 0. );
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(1., 1., 0. ));
   TestMolecule->AddAtom(Walker);
   Walker = World::getInstance().createAtom();
-  Walker->type = hydrogen;
-  *Walker->node = Vector(0., 0., 0. );
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(0., 0., 0. ));
   TestMolecule->AddAtom(Walker);
 
Index: src/unittests/AnalysisCorrelationToSurfaceUnitTest.cpp
===================================================================
--- src/unittests/AnalysisCorrelationToSurfaceUnitTest.cpp	(revision 677e130f3cbb80cdb1d7c6766dd729592710cd05)
+++ src/unittests/AnalysisCorrelationToSurfaceUnitTest.cpp	(revision d74077614bf2a27f66c91bf6bce70250442a0463)
@@ -44,4 +44,6 @@
   ASSERT_DO(Assert::Throw);
 
+  setVerbosity(5);
+
   atom *Walker = NULL;
 
@@ -62,21 +64,21 @@
 
   Walker = World::getInstance().createAtom();
-  Walker->type = hydrogen;
-  *Walker->node = Vector(1., 0., 1. );
-  TestSurfaceMolecule->AddAtom(Walker);
-
-  Walker = World::getInstance().createAtom();
-  Walker->type = hydrogen;
-  *Walker->node = Vector(0., 1., 1. );
-  TestSurfaceMolecule->AddAtom(Walker);
-
-  Walker = World::getInstance().createAtom();
-  Walker->type = hydrogen;
-  *Walker->node = Vector(1., 1., 0. );
-  TestSurfaceMolecule->AddAtom(Walker);
-
-  Walker = World::getInstance().createAtom();
-  Walker->type = hydrogen;
-  *Walker->node = Vector(0., 0., 0. );
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(1., 0., 1. ));
+  TestSurfaceMolecule->AddAtom(Walker);
+
+  Walker = World::getInstance().createAtom();
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(0., 1., 1. ));
+  TestSurfaceMolecule->AddAtom(Walker);
+
+  Walker = World::getInstance().createAtom();
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(1., 1., 0. ));
+  TestSurfaceMolecule->AddAtom(Walker);
+
+  Walker = World::getInstance().createAtom();
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(0., 0., 0. ));
   TestSurfaceMolecule->AddAtom(Walker);
 
@@ -95,22 +97,22 @@
   TestSurfaceMolecule = World::getInstance().createMolecule();
   Walker = World::getInstance().createAtom();
-  Walker->type = carbon;
-  *Walker->node = Vector(4., 0., 4. );
-  TestSurfaceMolecule->AddAtom(Walker);
-
-  Walker = World::getInstance().createAtom();
-  Walker->type = carbon;
-  *Walker->node = Vector(0., 4., 4. );
-  TestSurfaceMolecule->AddAtom(Walker);
-
-  Walker = World::getInstance().createAtom();
-  Walker->type = carbon;
-  *Walker->node = Vector(4., 4., 0. );
+  Walker->setType(carbon);
+  Walker->setPosition(Vector(4., 0., 4. ));
+  TestSurfaceMolecule->AddAtom(Walker);
+
+  Walker = World::getInstance().createAtom();
+  Walker->setType(carbon);
+  Walker->setPosition(Vector(0., 4., 4. ));
+  TestSurfaceMolecule->AddAtom(Walker);
+
+  Walker = World::getInstance().createAtom();
+  Walker->setType(carbon);
+  Walker->setPosition(Vector(4., 4., 0. ));
   TestSurfaceMolecule->AddAtom(Walker);
 
   // add inner atoms
   Walker = World::getInstance().createAtom();
-  Walker->type = carbon;
-  *Walker->node = Vector(0.5, 0.5, 0.5 );
+  Walker->setType(carbon);
+  Walker->setPosition(Vector(0.5, 0.5, 0.5 ));
   TestSurfaceMolecule->AddAtom(Walker);
 
Index: src/unittests/AnalysisPairCorrelationUnitTest.cpp
===================================================================
--- src/unittests/AnalysisPairCorrelationUnitTest.cpp	(revision 677e130f3cbb80cdb1d7c6766dd729592710cd05)
+++ src/unittests/AnalysisPairCorrelationUnitTest.cpp	(revision d74077614bf2a27f66c91bf6bce70250442a0463)
@@ -58,18 +58,18 @@
   TestMolecule = World::getInstance().createMolecule();
   Walker = World::getInstance().createAtom();
-  Walker->type = hydrogen;
-  *Walker->node = Vector(1., 0., 1. );
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(1., 0., 1. ));
   TestMolecule->AddAtom(Walker);
   Walker = World::getInstance().createAtom();
-  Walker->type = hydrogen;
-  *Walker->node = Vector(0., 1., 1. );
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(0., 1., 1. ));
   TestMolecule->AddAtom(Walker);
   Walker = World::getInstance().createAtom();
-  Walker->type = hydrogen;
-  *Walker->node = Vector(1., 1., 0. );
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(1., 1., 0. ));
   TestMolecule->AddAtom(Walker);
   Walker = World::getInstance().createAtom();
-  Walker->type = hydrogen;
-  *Walker->node = Vector(0., 0., 0. );
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(0., 0., 0. ));
   TestMolecule->AddAtom(Walker);
 
Index: src/unittests/CountBondsUnitTest.cpp
===================================================================
--- src/unittests/CountBondsUnitTest.cpp	(revision 677e130f3cbb80cdb1d7c6766dd729592710cd05)
+++ src/unittests/CountBondsUnitTest.cpp	(revision d74077614bf2a27f66c91bf6bce70250442a0463)
@@ -54,16 +54,16 @@
   Walker = World::getInstance().createAtom();
   CPPUNIT_ASSERT(Walker != NULL && "could not create atom");
-  Walker->type = hydrogen;
-  *Walker->node = Vector(-0.2418, 0.9350, 0. );
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(-0.2418, 0.9350, 0. ));
   TestMolecule1->AddAtom(Walker);
   Walker = World::getInstance().createAtom();
   CPPUNIT_ASSERT(Walker != NULL && "could not create atom");
-  Walker->type = hydrogen;
-  *Walker->node = Vector(0.9658, 0., 0. );
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(0.9658, 0., 0. ));
   TestMolecule1->AddAtom(Walker);
   Walker = World::getInstance().createAtom();
   CPPUNIT_ASSERT(Walker != NULL && "could not create atom");
-  Walker->type = oxygen;
-  *Walker->node = Vector(0., 0., 0. );
+  Walker->setType(oxygen);
+  Walker->setPosition(Vector(0., 0., 0. ));
   TestMolecule1->AddAtom(Walker);
 
@@ -72,16 +72,16 @@
   Walker = World::getInstance().createAtom();
   CPPUNIT_ASSERT(Walker != NULL && "could not create atom");
-  Walker->type = hydrogen;
-  *Walker->node = Vector(-0.2418, 0.9350, 0. );
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(-0.2418, 0.9350, 0. ));
   TestMolecule2->AddAtom(Walker);
   Walker = World::getInstance().createAtom();
   CPPUNIT_ASSERT(Walker != NULL && "could not create atom");
-  Walker->type = hydrogen;
-  *Walker->node = Vector(0.9658, 0., 0. );
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(0.9658, 0., 0. ));
   TestMolecule2->AddAtom(Walker);
   Walker = World::getInstance().createAtom();
   CPPUNIT_ASSERT(Walker != NULL && "could not create atom");
-  Walker->type = oxygen;
-  *Walker->node = Vector(0., 0., 0. );
+  Walker->setType(oxygen);
+  Walker->setPosition(Vector(0., 0., 0. ));
   TestMolecule2->AddAtom(Walker);
 
Index: src/unittests/LinkedCellUnitTest.cpp
===================================================================
--- src/unittests/LinkedCellUnitTest.cpp	(revision 677e130f3cbb80cdb1d7c6766dd729592710cd05)
+++ src/unittests/LinkedCellUnitTest.cpp	(revision d74077614bf2a27f66c91bf6bce70250442a0463)
@@ -50,6 +50,6 @@
         Walker = World::getInstance().createAtom();
         CPPUNIT_ASSERT(Walker != NULL && "could not create atom");
-        Walker->type = hydrogen;
-        *Walker->node = Vector(x, y, z );
+        Walker->setType(hydrogen);
+        Walker->setPosition(Vector(x, y, z ));
         TestMolecule->AddAtom(Walker);
       }
@@ -192,5 +192,5 @@
   atom *newAtom = World::getInstance().createAtom();
   newAtom->setName("test");
-  newAtom->x= Vector(1,1,1);
+  newAtom->setPosition(Vector(1,1,1));
   CPPUNIT_ASSERT_EQUAL( false, LC->SetIndexToNode(newAtom) );
   World::getInstance().destroyAtom(newAtom);
@@ -199,5 +199,5 @@
   newAtom = World::getInstance().createAtom();
   newAtom->setName("test");
-  newAtom->x = Vector(0,-1,0);
+  newAtom->setPosition(Vector(0,-1,0));
   CPPUNIT_ASSERT_EQUAL( false, LC->SetIndexToNode(newAtom) );
   World::getInstance().destroyAtom(newAtom);
@@ -216,5 +216,5 @@
       for (double z=0.5;z<3;z+=1.) {
         tester = Vector(x,y,z);
-        CPPUNIT_ASSERT_EQUAL( true, LC->SetIndexToVector(&tester) );
+        CPPUNIT_ASSERT_EQUAL( true, LC->SetIndexToVector(tester) );
       }
   // check corners of each cell
@@ -224,5 +224,5 @@
         tester= Vector(x,y,z);
         cout << "Tester is at " << tester << "." << endl;
-        CPPUNIT_ASSERT_EQUAL( true, LC->SetIndexToVector(&tester) );
+        CPPUNIT_ASSERT_EQUAL( true, LC->SetIndexToVector(tester) );
       }
   // check out of bounds
@@ -232,10 +232,10 @@
         tester = Vector(x,y,z);
         cout << "The following test is supposed to fail and produce an ERROR." << endl;
-        CPPUNIT_ASSERT_EQUAL( false, LC->SetIndexToVector(&tester) );
+        CPPUNIT_ASSERT_EQUAL( false, LC->SetIndexToVector(tester) );
       }
   // check nonsense vectors
   tester= Vector(-423598,3245978,29349);
   cout << "The following test is supposed to fail and produce an ERROR." << endl;
-  CPPUNIT_ASSERT_EQUAL( false, LC->SetIndexToVector(&tester) );
+  CPPUNIT_ASSERT_EQUAL( false, LC->SetIndexToVector(tester) );
 };
 
@@ -249,5 +249,5 @@
 
   tester= Vector(0.5,0.5,0.5);
-  LC->SetIndexToVector(&tester);
+  LC->SetIndexToVector(tester);
   LC->GetNeighbourBounds(lower, upper);
   for (int i=0;i<NDIM;i++)
@@ -268,5 +268,5 @@
   // get all atoms
   tester= Vector(1.5,1.5,1.5);
-  CPPUNIT_ASSERT_EQUAL ( true, LC->SetIndexToVector(&tester) );
+  CPPUNIT_ASSERT_EQUAL ( true, LC->SetIndexToVector(tester) );
   ListOfPoints = LC->GetallNeighbours();
   size = ListOfPoints->size();
@@ -285,10 +285,10 @@
   // get all atoms in one corner
   tester= Vector(0.5, 0.5, 0.5);
-  CPPUNIT_ASSERT_EQUAL ( true, LC->SetIndexToVector(&tester) );
+  CPPUNIT_ASSERT_EQUAL ( true, LC->SetIndexToVector(tester) );
   ListOfPoints = LC->GetallNeighbours();
   size=ListOfPoints->size();
   CPPUNIT_ASSERT_EQUAL( (size_t)8, size );
   for(molecule::iterator iter = TestMolecule->begin(); iter != TestMolecule->end(); ++iter){
-    if (((*iter)->x[0] <2) && ((*iter)->x[1] <2) && ((*iter)->x[2] <2)) {
+    if (((*iter)->at(0) <2) && ((*iter)->at(1) <2) && ((*iter)->at(2) <2)) {
       ListOfPoints->remove(*iter);
       size--;
@@ -303,5 +303,5 @@
   // get all atoms from one corner
   tester = Vector(0.5, 0.5, 0.5);
-  CPPUNIT_ASSERT_EQUAL ( true, LC->SetIndexToVector(&tester) );
+  CPPUNIT_ASSERT_EQUAL ( true, LC->SetIndexToVector(tester) );
   ListOfPoints = LC->GetallNeighbours(3);
   size=ListOfPoints->size();
@@ -329,10 +329,10 @@
   // get all points around central arom with radius 1.
   tester= Vector(1.5,1.5,1.5);
-  CPPUNIT_ASSERT_EQUAL ( true, LC->SetIndexToVector(&tester) );
+  CPPUNIT_ASSERT_EQUAL ( true, LC->SetIndexToVector(tester) );
   ListOfPoints = LC->GetPointsInsideSphere(1., &tester);
   size = ListOfPoints->size();
   CPPUNIT_ASSERT_EQUAL( (size_t)7, size );
   for(molecule::iterator iter = TestMolecule->begin(); iter!=TestMolecule->end();++iter){
-    if (((*iter)->x.DistanceSquared(tester) - 1.) < MYEPSILON ) {
+    if (((*iter)->DistanceSquared(tester) - 1.) < MYEPSILON ) {
       ListOfPoints->remove(*iter);
       size--;
Index: src/unittests/Makefile.am
===================================================================
--- src/unittests/Makefile.am	(revision 677e130f3cbb80cdb1d7c6766dd729592710cd05)
+++ src/unittests/Makefile.am	(revision d74077614bf2a27f66c91bf6bce70250442a0463)
@@ -224,11 +224,11 @@
 TesselationUnitTest_LDADD = ${ALLLIBS}
 
-Tesselation_BoundaryTriangleUnitTest_SOURCES = UnitTestMain.cpp tesselation_boundarytriangleunittest.cpp tesselation_boundarytriangleunittest.hpp
+Tesselation_BoundaryTriangleUnitTest_SOURCES = UnitTestMain.cpp tesselation_boundarytriangleunittest.cpp tesselation_boundarytriangleunittest.hpp Stubs/TesselPoint_stub.cpp Stubs/TesselPoint_stub.hpp
 Tesselation_BoundaryTriangleUnitTest_LDADD = ${ALLLIBS}
 
-Tesselation_InOutsideUnitTest_SOURCES = UnitTestMain.cpp tesselation_insideoutsideunittest.cpp tesselation_insideoutsideunittest.hpp
+Tesselation_InOutsideUnitTest_SOURCES = UnitTestMain.cpp tesselation_insideoutsideunittest.cpp tesselation_insideoutsideunittest.hpp Stubs/TesselPoint_stub.cpp Stubs/TesselPoint_stub.hpp
 Tesselation_InOutsideUnitTest_LDADD = ${ALLLIBS}
 
-TestRunner_SOURCES = TestRunnerMain.cpp $(TESTSOURCES) $(TESTHEADERS)
+TestRunner_SOURCES = TestRunnerMain.cpp $(TESTSOURCES) $(TESTHEADERS)  Stubs/TesselPoint_stub.cpp Stubs/TesselPoint_stub.hpp
 TestRunner_LDADD = ${ALLLIBS}
 
Index: src/unittests/ParserUnitTest.cpp
===================================================================
--- src/unittests/ParserUnitTest.cpp	(revision 677e130f3cbb80cdb1d7c6766dd729592710cd05)
+++ src/unittests/ParserUnitTest.cpp	(revision d74077614bf2a27f66c91bf6bce70250442a0463)
@@ -208,5 +208,5 @@
   input << Tremolo_Atomdata2;
   testParser->load(&input);
-  CPPUNIT_ASSERT(World::getInstance().getAtom(AtomByType(1))->x[0] == 3.0);
+  CPPUNIT_ASSERT(World::getInstance().getAtom(AtomByType(1))->at(0) == 3.0);
   input.clear();
 }
@@ -219,5 +219,5 @@
   input << Tremolo_velocity;
   testParser->load(&input);
-  CPPUNIT_ASSERT(World::getInstance().getAtom(AtomByType(1))->v[0] == 3.0);
+  CPPUNIT_ASSERT(World::getInstance().getAtom(AtomByType(1))->AtomicVelocity[0] == 3.0);
   input.clear();
 }
@@ -271,5 +271,5 @@
   // with the maximum number of fields and minimal information, default values are printed
   atom* newAtom = World::getInstance().createAtom();
-  newAtom->type = World::getInstance().getPeriode()->FindElement(1);
+  newAtom->setType(1);
   testParser->setFieldsForSave("x=3 u=3 F stress Id neighbors=5 imprData GroupMeasureTypeNo Type extType name resName chainID resSeq occupancy tempFactor segID Charge charge GrpTypeNo torsion");
   testParser->save(&output);
@@ -304,12 +304,12 @@
   atom *Walker = NULL;
   Walker = World::getInstance().createAtom();
-  Walker->type = World::getInstance().getPeriode()->FindElement(8);
-  Walker->x = Vector(0,0,0);
+  Walker->setType(8);
+  Walker->setPosition(Vector(0,0,0));
   Walker = World::getInstance().createAtom();
-  Walker->type = World::getInstance().getPeriode()->FindElement(1);
-  Walker->x = Vector(0.758602,0,0.504284);
+  Walker->setType(1);
+  Walker->setPosition(Vector(0.758602,0,0.504284));
   Walker = World::getInstance().createAtom();
-  Walker->type = World::getInstance().getPeriode()->FindElement(1);
-  Walker->x = Vector(0.758602,0,-0.504284);
+  Walker->setType(1);
+  Walker->setPosition(Vector(0.758602,0,-0.504284));
   CPPUNIT_ASSERT_EQUAL(3, World::getInstance().numAtoms());
 
Index: src/unittests/analysisbondsunittest.cpp
===================================================================
--- src/unittests/analysisbondsunittest.cpp	(revision 677e130f3cbb80cdb1d7c6766dd729592710cd05)
+++ src/unittests/analysisbondsunittest.cpp	(revision d74077614bf2a27f66c91bf6bce70250442a0463)
@@ -16,5 +16,4 @@
 #include <cstring>
 
-#include "World.hpp"
 #include "analysis_bonds.hpp"
 #include "analysisbondsunittest.hpp"
@@ -25,4 +24,5 @@
 #include "molecule.hpp"
 #include "periodentafel.hpp"
+#include "vector.hpp"
 #include "World.hpp"
 
@@ -52,26 +52,26 @@
   Walker = World::getInstance().createAtom();
   CPPUNIT_ASSERT(Walker != NULL && "could not create atom");
-  Walker->type = hydrogen;
-  *Walker->node = Vector(1.5, 0., 1.5 );
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(1.5, 0., 1.5 ));
   TestMolecule->AddAtom(Walker);
   Walker = World::getInstance().createAtom();
   CPPUNIT_ASSERT(Walker != NULL && "could not create atom");
-  Walker->type = hydrogen;
-  *Walker->node = Vector(0., 1.5, 1.5 );
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(0., 1.5, 1.5 ));
   TestMolecule->AddAtom(Walker);
   Walker = World::getInstance().createAtom();
   CPPUNIT_ASSERT(Walker != NULL && "could not create atom");
-  Walker->type = hydrogen;
-  *Walker->node = Vector(1.5, 1.5, 0. );
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(1.5, 1.5, 0. ));
   TestMolecule->AddAtom(Walker);
   Walker = World::getInstance().createAtom();
   CPPUNIT_ASSERT(Walker != NULL && "could not create atom");
-  Walker->type = hydrogen;
-  *Walker->node = Vector(0., 0., 0. );
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(0., 0., 0. ));
   TestMolecule->AddAtom(Walker);
   Walker = World::getInstance().createAtom();
   CPPUNIT_ASSERT(Walker != NULL && "could not create atom");
-  Walker->type = carbon;
-  *Walker->node = Vector(0.5, 0.5, 0.5 );
+  Walker->setType(carbon);
+  Walker->setPosition(Vector(0.5, 0.5, 0.5 ));
   TestMolecule->AddAtom(Walker);
 
Index: src/unittests/bondgraphunittest.cpp
===================================================================
--- src/unittests/bondgraphunittest.cpp	(revision 677e130f3cbb80cdb1d7c6766dd729592710cd05)
+++ src/unittests/bondgraphunittest.cpp	(revision d74077614bf2a27f66c91bf6bce70250442a0463)
@@ -54,24 +54,24 @@
   Walker = World::getInstance().createAtom();
   CPPUNIT_ASSERT(Walker != NULL && "could not create atom");
-  Walker->type = carbon;
-  *Walker->node = Vector(1., 0., 1. );
+  Walker->setType(carbon);
+  Walker->setPosition(Vector(1., 0., 1. ));
   TestMolecule->AddAtom(Walker);
 
   Walker = World::getInstance().createAtom();
   CPPUNIT_ASSERT(Walker != NULL && "could not create atom");
-  Walker->type = carbon;
-  *Walker->node = Vector(0., 1., 1. );
+  Walker->setType(carbon);
+  Walker->setPosition(Vector(0., 1., 1. ));
   TestMolecule->AddAtom(Walker);
 
   Walker = World::getInstance().createAtom();
   CPPUNIT_ASSERT(Walker != NULL && "could not create atom");
-  Walker->type = carbon;
-  *Walker->node = Vector(1., 1., 0. );
+  Walker->setType(carbon);
+  Walker->setPosition(Vector(1., 1., 0. ));
   TestMolecule->AddAtom(Walker);
 
   Walker = World::getInstance().createAtom();
   CPPUNIT_ASSERT(Walker != NULL && "could not create atom");
-  Walker->type = carbon;
-  *Walker->node = Vector(0., 0., 0. );
+  Walker->setType(carbon);
+  Walker->setPosition(Vector(0., 0., 0. ));
   TestMolecule->AddAtom(Walker);
 
Index: src/unittests/listofbondsunittest.cpp
===================================================================
--- src/unittests/listofbondsunittest.cpp	(revision 677e130f3cbb80cdb1d7c6766dd729592710cd05)
+++ src/unittests/listofbondsunittest.cpp	(revision d74077614bf2a27f66c91bf6bce70250442a0463)
@@ -47,21 +47,21 @@
   Walker = World::getInstance().createAtom();
   CPPUNIT_ASSERT(Walker != NULL && "could not create atom");
-  Walker->type = hydrogen;
-  *Walker->node = Vector(1., 0., 1. );
-  TestMolecule->AddAtom(Walker);
-  Walker = World::getInstance().createAtom();
-  CPPUNIT_ASSERT(Walker != NULL && "could not create atom");
-  Walker->type = hydrogen;
-  *Walker->node = Vector(0., 1., 1. );
-  TestMolecule->AddAtom(Walker);
-  Walker = World::getInstance().createAtom();
-  CPPUNIT_ASSERT(Walker != NULL && "could not create atom");
-  Walker->type = hydrogen;
-  *Walker->node = Vector(1., 1., 0. );
-  TestMolecule->AddAtom(Walker);
-  Walker = World::getInstance().createAtom();
-  CPPUNIT_ASSERT(Walker != NULL && "could not create atom");
-  Walker->type = hydrogen;
-  *Walker->node = Vector(0., 0., 0. );
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(1., 0., 1. ));
+  TestMolecule->AddAtom(Walker);
+  Walker = World::getInstance().createAtom();
+  CPPUNIT_ASSERT(Walker != NULL && "could not create atom");
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(0., 1., 1. ));
+  TestMolecule->AddAtom(Walker);
+  Walker = World::getInstance().createAtom();
+  CPPUNIT_ASSERT(Walker != NULL && "could not create atom");
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(1., 1., 0. ));
+  TestMolecule->AddAtom(Walker);
+  Walker = World::getInstance().createAtom();
+  CPPUNIT_ASSERT(Walker != NULL && "could not create atom");
+  Walker->setType(hydrogen);
+  Walker->setPosition(Vector(0., 0., 0. ));
   TestMolecule->AddAtom(Walker);
 
Index: src/unittests/tesselation_boundarytriangleunittest.cpp
===================================================================
--- src/unittests/tesselation_boundarytriangleunittest.cpp	(revision 677e130f3cbb80cdb1d7c6766dd729592710cd05)
+++ src/unittests/tesselation_boundarytriangleunittest.cpp	(revision d74077614bf2a27f66c91bf6bce70250442a0463)
@@ -13,7 +13,12 @@
 
 #include <cstring>
+#include <iostream>
 
 #include "defs.hpp"
-#include "tesselation.hpp"
+#include "TesselPoint.hpp"
+#include "BoundaryPointSet.hpp"
+#include "BoundaryLineSet.hpp"
+#include "BoundaryTriangleSet.hpp"
+#include "CandidateForTesselation.hpp"
 #include "tesselation_boundarytriangleunittest.hpp"
 
@@ -36,15 +41,15 @@
   // create nodes
   tesselpoints[0] = new TesselPoint;
-  tesselpoints[0]->node = new Vector(0., 0., 0.);
+  tesselpoints[0]->setPosition(Vector(0., 0., 0.));
   tesselpoints[0]->setName("1");
   tesselpoints[0]->nr = 1;
   points[0] = new BoundaryPointSet(tesselpoints[0]);
   tesselpoints[1] = new TesselPoint;
-  tesselpoints[1]->node = new Vector(0., 1., 0.);
+  tesselpoints[1]->setPosition(Vector(0., 1., 0.));
   tesselpoints[1]->setName("2");
   tesselpoints[1]->nr = 2;
   points[1] = new BoundaryPointSet(tesselpoints[1]);
   tesselpoints[2] = new TesselPoint;
-  tesselpoints[2]->node = new Vector(1., 0., 0.);
+  tesselpoints[2]->setPosition(Vector(1., 0., 0.));
   tesselpoints[2]->setName("3");
   tesselpoints[2]->nr = 3;
@@ -67,5 +72,4 @@
   for (int i=0;i<3;++i) {
     // TesselPoint does not delete its vector as it only got a reference
-    delete tesselpoints[i]->node;
     delete tesselpoints[i];
   }
@@ -83,9 +87,9 @@
   // simple test on y line
   Point = Vector(-1.,0.5,0.);
-  CPPUNIT_ASSERT_EQUAL( 1., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) );
+  CPPUNIT_ASSERT_EQUAL( 1., triangle->GetClosestPointInsideTriangle(Point, TestIntersection) );
   Point = Vector(0.,0.5,0.);
   CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection );
   Point = Vector(-4.,0.5,0.);
-  CPPUNIT_ASSERT_EQUAL( 16., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) );
+  CPPUNIT_ASSERT_EQUAL( 16., triangle->GetClosestPointInsideTriangle(Point, TestIntersection) );
   Point = Vector(0.,0.5,0.);
   CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection );
@@ -93,9 +97,9 @@
   // simple test on x line
   Point = Vector(0.5,-1.,0.);
-  CPPUNIT_ASSERT_EQUAL( 1., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) );
+  CPPUNIT_ASSERT_EQUAL( 1., triangle->GetClosestPointInsideTriangle(Point, TestIntersection) );
   Point = Vector(0.5,0.,0.);
   CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection );
   Point = Vector(0.5,-6.,0.);
-  CPPUNIT_ASSERT_EQUAL( 36., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) );
+  CPPUNIT_ASSERT_EQUAL( 36., triangle->GetClosestPointInsideTriangle(Point, TestIntersection) );
   Point = Vector(0.5,0.,0.);
   CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection );
@@ -103,9 +107,9 @@
   // simple test on slanted line
   Point = Vector(1.,1.,0.);
-  CPPUNIT_ASSERT_EQUAL( 0.5, triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) );
+  CPPUNIT_ASSERT_EQUAL( 0.5, triangle->GetClosestPointInsideTriangle(Point, TestIntersection) );
   Point = Vector(0.5,0.5,0.);
   CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection );
   Point = Vector(5.,5.,0.);
-  CPPUNIT_ASSERT_EQUAL( 40.5, triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) );
+  CPPUNIT_ASSERT_EQUAL( 40.5, triangle->GetClosestPointInsideTriangle(Point, TestIntersection) );
   Point = Vector(0.5,0.5,0.);
   CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection );
@@ -113,5 +117,5 @@
   // simple test on first node
   Point = Vector(-1.,-1.,0.);
-  CPPUNIT_ASSERT_EQUAL( 2., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) );
+  CPPUNIT_ASSERT_EQUAL( 2., triangle->GetClosestPointInsideTriangle(Point, TestIntersection) );
   Point = Vector(0.,0.,0.);
   CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection );
@@ -119,5 +123,5 @@
   // simple test on second node
   Point = Vector(0.,2.,0.);
-  CPPUNIT_ASSERT_EQUAL( 1., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) );
+  CPPUNIT_ASSERT_EQUAL( 1., triangle->GetClosestPointInsideTriangle(Point, TestIntersection) );
   Point = Vector(0.,1.,0.);
   CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection );
@@ -125,5 +129,5 @@
   // simple test on third node
   Point = Vector(2.,0.,0.);
-  CPPUNIT_ASSERT_EQUAL( 1., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) );
+  CPPUNIT_ASSERT_EQUAL( 1., triangle->GetClosestPointInsideTriangle(Point, TestIntersection) );
   Point = Vector(1.,0.,0.);
   CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection );
@@ -139,9 +143,9 @@
   // straight down/up
   Point = Vector(1./3.,1./3.,+5.);
-  CPPUNIT_ASSERT_EQUAL( 25. , triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) );
+  CPPUNIT_ASSERT_EQUAL( 25. , triangle->GetClosestPointInsideTriangle(Point, TestIntersection) );
   Point = Vector(1./3.,1./3.,0.);
   CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection );
   Point = Vector(1./3.,1./3.,-5.);
-  CPPUNIT_ASSERT_EQUAL( 25. , triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) );
+  CPPUNIT_ASSERT_EQUAL( 25. , triangle->GetClosestPointInsideTriangle(Point, TestIntersection) );
   Point = Vector(1./3.,1./3.,0.);
   CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection );
@@ -149,9 +153,9 @@
   // simple test on y line
   Point = Vector(-1.,0.5,+2.);
-  CPPUNIT_ASSERT_EQUAL( 5., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) );
+  CPPUNIT_ASSERT_EQUAL( 5., triangle->GetClosestPointInsideTriangle(Point, TestIntersection) );
   Point = Vector(0.,0.5,0.);
   CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection );
   Point = Vector(-1.,0.5,-3.);
-  CPPUNIT_ASSERT_EQUAL( 10., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) );
+  CPPUNIT_ASSERT_EQUAL( 10., triangle->GetClosestPointInsideTriangle(Point, TestIntersection) );
   Point = Vector(0.,0.5,0.);
   CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection );
@@ -159,9 +163,9 @@
   // simple test on x line
   Point = Vector(0.5,-1.,+1.);
-  CPPUNIT_ASSERT_EQUAL( 2., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) );
+  CPPUNIT_ASSERT_EQUAL( 2., triangle->GetClosestPointInsideTriangle(Point, TestIntersection) );
   Point = Vector(0.5,0.,0.);
   CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection );
   Point = Vector(0.5,-1.,-2.);
-  CPPUNIT_ASSERT_EQUAL( 5., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) );
+  CPPUNIT_ASSERT_EQUAL( 5., triangle->GetClosestPointInsideTriangle(Point, TestIntersection) );
   Point = Vector(0.5,0.,0.);
   CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection );
@@ -169,9 +173,9 @@
   // simple test on slanted line
   Point = Vector(1.,1.,+3.);
-  CPPUNIT_ASSERT_EQUAL( 9.5, triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) );
+  CPPUNIT_ASSERT_EQUAL( 9.5, triangle->GetClosestPointInsideTriangle(Point, TestIntersection) );
   Point = Vector(0.5,0.5,0.);
   CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection );
   Point = Vector(1.,1.,-4.);
-  CPPUNIT_ASSERT_EQUAL( 16.5, triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) );
+  CPPUNIT_ASSERT_EQUAL( 16.5, triangle->GetClosestPointInsideTriangle(Point, TestIntersection) );
   Point = Vector(0.5,0.5,0.);
   CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection );
@@ -179,5 +183,5 @@
   // simple test on first node
   Point = Vector(-1.,-1.,5.);
-  CPPUNIT_ASSERT_EQUAL( 27., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) );
+  CPPUNIT_ASSERT_EQUAL( 27., triangle->GetClosestPointInsideTriangle(Point, TestIntersection) );
   Point = Vector(0.,0.,0.);
   CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection );
@@ -185,5 +189,5 @@
   // simple test on second node
   Point = Vector(0.,2.,5.);
-  CPPUNIT_ASSERT_EQUAL( 26., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) );
+  CPPUNIT_ASSERT_EQUAL( 26., triangle->GetClosestPointInsideTriangle(Point, TestIntersection) );
   Point = Vector(0.,1.,0.);
   CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection );
@@ -191,5 +195,5 @@
   // simple test on third node
   Point = Vector(2.,0.,5.);
-  CPPUNIT_ASSERT_EQUAL( 26., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) );
+  CPPUNIT_ASSERT_EQUAL( 26., triangle->GetClosestPointInsideTriangle(Point, TestIntersection) );
   Point = Vector(1.,0.,0.);
   CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection );
Index: src/unittests/tesselation_boundarytriangleunittest.hpp
===================================================================
--- src/unittests/tesselation_boundarytriangleunittest.hpp	(revision 677e130f3cbb80cdb1d7c6766dd729592710cd05)
+++ src/unittests/tesselation_boundarytriangleunittest.hpp	(revision d74077614bf2a27f66c91bf6bce70250442a0463)
@@ -15,4 +15,6 @@
 #include "linkedcell.hpp"
 #include "tesselation.hpp"
+
+class TesselPoint;
 
 /********************************************** Test classes **************************************/
Index: src/unittests/tesselation_insideoutsideunittest.cpp
===================================================================
--- src/unittests/tesselation_insideoutsideunittest.cpp	(revision 677e130f3cbb80cdb1d7c6766dd729592710cd05)
+++ src/unittests/tesselation_insideoutsideunittest.cpp	(revision d74077614bf2a27f66c91bf6bce70250442a0463)
@@ -13,7 +13,11 @@
 
 #include <cstring>
+#include <iostream>
 
 #include "defs.hpp"
-#include "tesselation.hpp"
+#include "TesselPoint.hpp"
+#include "BoundaryLineSet.hpp"
+#include "BoundaryTriangleSet.hpp"
+#include "CandidateForTesselation.hpp"
 #include "tesselation_insideoutsideunittest.hpp"
 #include "verbose.hpp"
@@ -30,5 +34,4 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( TesselationInOutsideTest );
 
-
 void TesselationInOutsideTest::setUp()
 {
@@ -38,40 +41,40 @@
   class TesselPoint *Walker;
   Walker = new TesselPoint;
-  Walker->node = new Vector(0., 0., 0.);
+  Walker->setPosition(Vector(0., 0., 0.));
   Walker->setName("1");
   Walker->nr = 1;
   Corners.push_back(Walker);
   Walker = new TesselPoint;
-  Walker->node = new Vector(0., 1., 0.);
+  Walker->setPosition(Vector(0., 1., 0.));
   Walker->setName("2");
   Walker->nr = 2;
   Corners.push_back(Walker);
   Walker = new TesselPoint;
-  Walker->node = new Vector(1., 0., 0.);
+  Walker->setPosition(Vector(1., 0., 0.));
   Walker->setName("3");
   Walker->nr = 3;
   Corners.push_back(Walker);
   Walker = new TesselPoint;
-  Walker->node = new Vector(1., 1., 0.);
+  Walker->setPosition(Vector(1., 1., 0.));
   Walker->setName("4");
   Walker->nr = 4;
   Corners.push_back(Walker);
   Walker = new TesselPoint;
-  Walker->node = new Vector(0., 0., 1.);
+  Walker->setPosition(Vector(0., 0., 1.));
   Walker->setName("5");
   Walker->nr = 5;
   Corners.push_back(Walker);
   Walker = new TesselPoint;
-  Walker->node = new Vector(0., 1., 1.);
+  Walker->setPosition(Vector(0., 1., 1.));
   Walker->setName("6");
   Walker->nr = 6;
   Corners.push_back(Walker);
   Walker = new TesselPoint;
-  Walker->node = new Vector(1., 0., 1.);
+  Walker->setPosition(Vector(1., 0., 1.));
   Walker->setName("7");
   Walker->nr = 7;
   Corners.push_back(Walker);
   Walker = new TesselPoint;
-  Walker->node = new Vector(1., 1., 1.);
+  Walker->setPosition(Vector(1., 1., 1.));
   Walker->setName("8");
   Walker->nr = 8;
@@ -130,8 +133,6 @@
   delete(LinkedList);
   delete(TesselStruct);
-  for (LinkedCell::LinkedNodes::iterator Runner = Corners.begin(); Runner != Corners.end(); Runner++) {
-    delete((*Runner)->node);
+  for (LinkedCell::LinkedNodes::iterator Runner = Corners.begin(); Runner != Corners.end(); Runner++)
     delete(*Runner);
-  }
   Corners.clear();
   logger::purgeInstance();
Index: src/unittests/tesselationunittest.cpp
===================================================================
--- src/unittests/tesselationunittest.cpp	(revision 677e130f3cbb80cdb1d7c6766dd729592710cd05)
+++ src/unittests/tesselationunittest.cpp	(revision d74077614bf2a27f66c91bf6bce70250442a0463)
@@ -16,5 +16,8 @@
 
 #include "defs.hpp"
-#include "tesselation.hpp"
+#include "TesselPoint.hpp"
+#include "BoundaryLineSet.hpp"
+#include "BoundaryTriangleSet.hpp"
+#include "CandidateForTesselation.hpp"
 #include "tesselationunittest.hpp"
 
@@ -36,20 +39,20 @@
   class TesselPoint *Walker;
   Walker = new TesselPoint;
-  Walker->node = new Vector(1., 0., -1.);
+  Walker->setPosition(Vector(1., 0., -1.));
   Walker->setName("1");
   Walker->nr = 1;
   Corners.push_back(Walker);
   Walker = new TesselPoint;
-  Walker->node = new Vector(-1., 1., -1.);
+  Walker->setPosition(Vector(-1., 1., -1.));
   Walker->setName("2");
   Walker->nr = 2;
   Corners.push_back(Walker);
   Walker = new TesselPoint;
-  Walker->node = new Vector(-1., -1., -1.);
+  Walker->setPosition(Vector(-1., -1., -1.));
   Walker->setName("3");
   Walker->nr = 3;
   Corners.push_back(Walker);
   Walker = new TesselPoint;
-  Walker->node = new Vector(-1., 0., 1.);
+  Walker->setPosition(Vector(-1., 0., 1.));
   Walker->setName("4");
   Walker->nr = 4;
@@ -101,8 +104,6 @@
   delete(LinkedList);
   delete(TesselStruct);
-  for (LinkedCell::LinkedNodes::iterator Runner = Corners.begin(); Runner != Corners.end(); Runner++) {
-    delete((*Runner)->node);
+  for (LinkedCell::LinkedNodes::iterator Runner = Corners.begin(); Runner != Corners.end(); Runner++)
     delete(*Runner);
-  }
   Corners.clear();
   logger::purgeInstance();
Index: src/unittests/vectorunittest.cpp
===================================================================
--- src/unittests/vectorunittest.cpp	(revision 677e130f3cbb80cdb1d7c6766dd729592710cd05)
+++ src/unittests/vectorunittest.cpp	(revision d74077614bf2a27f66c91bf6bce70250442a0463)
@@ -52,4 +52,53 @@
   errorLogger::purgeInstance();
 };
+
+/** UnitTest for Constructors and Vector::IsZero() and Vector::IsOne().
+ */
+void VectorTest::AssignmentTest()
+{
+  // test with zero
+  zero.at(0) = 0;
+  zero.at(1) = 0;
+  zero.at(2) = 0;
+  double zero_array[3] = {0., 0., 0.};
+
+  CPPUNIT_ASSERT_EQUAL( zero, Vector(0,0,0));
+  CPPUNIT_ASSERT_EQUAL( zero, Vector(0.,0.,0.));
+  CPPUNIT_ASSERT_EQUAL( zero, Vector(zero_array[0], zero_array[1], zero_array[2]));
+  CPPUNIT_ASSERT_EQUAL( zero, Vector(zero_array));
+
+  // test with unit
+  unit.at(0) = 1;
+  unit.at(1) = 0;
+  unit.at(2) = 0;
+  double unit_array[3] = {1., 0., 0.};
+
+  CPPUNIT_ASSERT_EQUAL( unit, Vector(1,0,0));
+  CPPUNIT_ASSERT_EQUAL( unit, Vector(1.,0.,0.));
+  CPPUNIT_ASSERT_EQUAL( unit, Vector(unit_array[0], unit_array[1], unit_array[2]));
+  CPPUNIT_ASSERT_EQUAL( unit, Vector(unit_array));
+
+  // test with two
+  two.at(0) = 2;
+  two.at(1) = 1;
+  two.at(2) = 0;
+  double two_array[3] = {2., 1., 0.};
+
+  CPPUNIT_ASSERT_EQUAL( two, Vector(2,1,0));
+  CPPUNIT_ASSERT_EQUAL( two, Vector(2.,1.,0.));
+  CPPUNIT_ASSERT_EQUAL( two, Vector(two_array[0], two_array[1], two_array[2]));
+  CPPUNIT_ASSERT_EQUAL( two, Vector(two_array));
+
+  // test with three
+  three.at(0) = 1;
+  three.at(1) = 2;
+  three.at(2) = 3;
+  double three_array[3] = {1., 2., 3.};
+
+  CPPUNIT_ASSERT_EQUAL( three, Vector(1,2,3));
+  CPPUNIT_ASSERT_EQUAL( three, Vector(1.,2.,3.));
+  CPPUNIT_ASSERT_EQUAL( three, Vector(three_array[0], three_array[1], three_array[2]));
+  CPPUNIT_ASSERT_EQUAL( three, Vector(three_array));
+}
 
 /** UnitTest for Constructors and Vector::IsZero() and Vector::IsOne().
Index: src/unittests/vectorunittest.hpp
===================================================================
--- src/unittests/vectorunittest.hpp	(revision 677e130f3cbb80cdb1d7c6766dd729592710cd05)
+++ src/unittests/vectorunittest.hpp	(revision d74077614bf2a27f66c91bf6bce70250442a0463)
@@ -18,4 +18,5 @@
 {
     CPPUNIT_TEST_SUITE( VectorTest) ;
+    CPPUNIT_TEST ( AssignmentTest );
     CPPUNIT_TEST ( UnityTest );
     CPPUNIT_TEST ( SimpleAlgebraTest );
@@ -33,4 +34,5 @@
     void tearDown();
 
+    void AssignmentTest();
     void UnityTest();
     void OperatorAlgebraTest();
