Index: src/Actions/FillAction/FillSurfaceAction.cpp
===================================================================
--- src/Actions/FillAction/FillSurfaceAction.cpp	(revision 2d701e7056fe4b1af51c7f20e51cc77ee82ff91b)
+++ src/Actions/FillAction/FillSurfaceAction.cpp	(revision 833b155e089160225200039831a7742be7bb1a16)
@@ -81,6 +81,5 @@
 
   // center filler's tip at origin
-  Vector max;
-  filler->CenterEdge(&max);
+  filler->CenterEdge();
 
   // determine center with respect to alignment axis
@@ -96,5 +95,5 @@
   {
     Vector translater = -1.*sum;
-    filler->Translate(&translater);
+    filler->Translate(translater);
   }
 
Index: src/Actions/MoleculeAction/CopyAction.cpp
===================================================================
--- src/Actions/MoleculeAction/CopyAction.cpp	(revision 2d701e7056fe4b1af51c7f20e51cc77ee82ff91b)
+++ src/Actions/MoleculeAction/CopyAction.cpp	(revision 833b155e089160225200039831a7742be7bb1a16)
@@ -63,9 +63,8 @@
       iter != World::getInstance().endMoleculeSelection(); ++iter) {
     molecule * const copy = (iter->second)->CopyMolecule();
-    Vector *Center = (iter->second)->DetermineCenterOfAll();
-    *Center *= -1.;
-    *Center += params.position.get();
+    Vector Center = (iter->second)->DetermineCenterOfAll();
+    Center *= -1.;
+    Center += params.position.get();
     copy->Translate(Center);
-    delete(Center);
     molecules.push_back(copy->getId());
   }
Index: src/Actions/MoleculeAction/RotateAroundSelfByAngleAction.cpp
===================================================================
--- src/Actions/MoleculeAction/RotateAroundSelfByAngleAction.cpp	(revision 2d701e7056fe4b1af51c7f20e51cc77ee82ff91b)
+++ src/Actions/MoleculeAction/RotateAroundSelfByAngleAction.cpp	(revision 833b155e089160225200039831a7742be7bb1a16)
@@ -74,8 +74,7 @@
 
     // Creation Line that is the rotation axis
-    Vector *CenterOfGravity = mol->DetermineCenterOfGravity();
-    LOG(0,  "Center of gravity is " << *CenterOfGravity << ".");
-    Line RotationAxis(*CenterOfGravity, params.Axis.get());
-    delete(CenterOfGravity);
+    const Vector CenterOfGravity = mol->DetermineCenterOfGravity();
+    LOG(0,  "Center of gravity is " << CenterOfGravity << ".");
+    Line RotationAxis(CenterOfGravity, params.Axis.get());
     LOG(0, "Rotate " << mol->getName() << " around self by " << params.angle.get() << " radian around axis " << RotationAxis << ".");
 
@@ -93,8 +92,7 @@
 
   BOOST_FOREACH(molecule *mol, state->selectedMolecules) {
-    Vector *CenterOfGravity = mol->DetermineCenterOfGravity();
-    LOG(0,  "Center of gravity is " << *CenterOfGravity << ".");
-    Line RotationAxis(*CenterOfGravity, state->params.Axis.get());
-    delete(CenterOfGravity);
+    const Vector CenterOfGravity = mol->DetermineCenterOfGravity();
+    LOG(0,  "Center of gravity is " <<CenterOfGravity << ".");
+    Line RotationAxis(CenterOfGravity, state->params.Axis.get());
     LOG(0, "Rotate " << mol->getName() << " around self by " << -state->params.angle.get() << " radian around axis " << RotationAxis << ".");
 
@@ -111,8 +109,7 @@
 
   BOOST_FOREACH(molecule *mol, state->selectedMolecules) {
-    Vector *CenterOfGravity = mol->DetermineCenterOfGravity();
-    LOG(0,  "Center of gravity is " << *CenterOfGravity << ".");
-    Line RotationAxis(*CenterOfGravity, state->params.Axis.get());
-    delete(CenterOfGravity);
+    const Vector CenterOfGravity = mol->DetermineCenterOfGravity();
+    LOG(0,  "Center of gravity is " << CenterOfGravity << ".");
+    Line RotationAxis(CenterOfGravity, state->params.Axis.get());
     LOG(0, "Rotate " << mol->getName() << " around self by " << state->params.angle.get() << " radian around axis " << RotationAxis << ".");
 
Index: src/Analysis/unittests/CountBondsUnitTest.cpp
===================================================================
--- src/Analysis/unittests/CountBondsUnitTest.cpp	(revision 2d701e7056fe4b1af51c7f20e51cc77ee82ff91b)
+++ src/Analysis/unittests/CountBondsUnitTest.cpp	(revision 833b155e089160225200039831a7742be7bb1a16)
@@ -148,5 +148,5 @@
 void CountBondsTest::HydrogenBridgeBondsTest()
 {
-  double *mirror = new double[3];
+  double mirror[3];
   CPPUNIT_ASSERT(mirror != NULL && "could not create array of doubles");
   for (int i=0;i<3;i++)
@@ -161,67 +161,65 @@
   cout << "Case 1: offset of (3,0,0), hence angles are (104.5, 0, 75.5, 180) < 30." << endl;
   Translator  = Vector(3,0,0);
-  TestMolecule1->Translate(&Translator);
+  TestMolecule1->Translate(Translator);
   CPPUNIT_ASSERT_EQUAL( 1 , CountHydrogenBridgeBonds(molecules, NULL, NULL) );
   CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, oxygen, NULL) );
   Translator = Vector(-3,0,0);
-  TestMolecule1->Translate(&Translator);
+  TestMolecule1->Translate(Translator);
 
   cout << "Case 2: offset of (0,3,0), hence angle are (14.5, 165.5, 90) < 30 (only three, because other 90 is missing due to first H01 only fulfilling H-bond criteria)." << endl;
   Translator = Vector(0,3,0);
-  TestMolecule1->Translate(&Translator);
+  TestMolecule1->Translate(Translator);
   CPPUNIT_ASSERT_EQUAL( 1 , CountHydrogenBridgeBonds(molecules, NULL, NULL) );
   Translator = Vector(0,-3,0);
-  TestMolecule1->Translate(&Translator);
+  TestMolecule1->Translate(Translator);
 
   cout << "Case 3: offset of (0,-3,0) and mirror, hence angle are (165.5, 90, 165.5, 90) > 30." << endl;
   Translator = Vector(0,-3,0);
-  TestMolecule1->Scale((const double ** const)&mirror);
-  TestMolecule1->Translate(&Translator);
+  TestMolecule1->Scale(&mirror[0]);
+  TestMolecule1->Translate(Translator);
   CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL, NULL) );
   Translator = Vector(0,3,0);
-  TestMolecule1->Translate(&Translator);
-  TestMolecule1->Scale((const double ** const)&mirror);
+  TestMolecule1->Translate(Translator);
+  TestMolecule1->Scale(&mirror[0]);
 
   cout << "Case 4: offset of (2,1,0), hence angle are (78, 26.6, 102, 153.4) < 30." << endl;
   Translator = Vector(2,1,0);
-  TestMolecule1->Translate(&Translator);
+  TestMolecule1->Translate(Translator);
   CPPUNIT_ASSERT_EQUAL( 1 , CountHydrogenBridgeBonds(molecules, NULL, NULL) );
   Translator = Vector(-2,-1,0);
-  TestMolecule1->Translate(&Translator);
+  TestMolecule1->Translate(Translator);
 
   cout << "Case 5: offset of (0,0,3), hence angle are (90, 90, 90, 90) > 30." << endl;
   Translator = Vector(0,0,3);
-  TestMolecule1->Translate(&Translator);
+  TestMolecule1->Translate(Translator);
   CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL, NULL) );
   Translator = Vector(0,0,-3);
-  TestMolecule1->Translate(&Translator);
+  TestMolecule1->Translate(Translator);
 
   cout << "Case 6: offset of (-3,0,0) and mirror, hence angle are (75.5, 180, 104.5, 180) > 30." << endl;
   Translator = Vector(-3,0,0);
-  TestMolecule1->Scale((const double ** const)&mirror);
-  TestMolecule1->Translate(&Translator);
+  TestMolecule1->Scale(&mirror[0]);
+  TestMolecule1->Translate(Translator);
   CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL, NULL) );
   Translator = Vector(3,0,0);
-  TestMolecule1->Translate(&Translator);
-  TestMolecule1->Scale((const double ** const)&mirror);
+  TestMolecule1->Translate(Translator);
+  TestMolecule1->Scale(&mirror[0]);
 
   cout << "Case 7: offset of (3,0,0) and mirror, hence angles are (104.5, 0, 104.5, 0) < 30, but interfering hydrogens." << endl;
   Translator = Vector(3,0,0);
-  TestMolecule1->Scale((const double ** const)&mirror);
-  TestMolecule1->Translate(&Translator);
+  TestMolecule1->Scale(&mirror[0]);
+  TestMolecule1->Translate(Translator);
   CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL, NULL) );
   Translator = Vector(-3,0,0);
-  TestMolecule1->Translate(&Translator);
-  TestMolecule1->Scale((const double ** const)&mirror);
+  TestMolecule1->Translate(Translator);
+  TestMolecule1->Scale(&mirror[0]);
 
   cout << "Case 8: offset of (0,3,0), hence angle are (14.5, 90, 14.5, 90) < 30, but interfering hydrogens." << endl;
   Translator = Vector(0,3,0);
-  TestMolecule1->Scale((const double ** const)&mirror);
-  TestMolecule1->Translate(&Translator);
+  TestMolecule1->Scale(&mirror[0]);
+  TestMolecule1->Translate(Translator);
   CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL, NULL) );
   Translator = Vector(0,-3,0);
-  TestMolecule1->Translate(&Translator);
-  TestMolecule1->Scale((const double ** const)&mirror);
-
-  delete[](mirror);
-};
+  TestMolecule1->Translate(Translator);
+  TestMolecule1->Scale(&mirror[0]);
+};
Index: src/Tesselation/boundary.cpp
===================================================================
--- src/Tesselation/boundary.cpp	(revision 2d701e7056fe4b1af51c7f20e51cc77ee82ff91b)
+++ src/Tesselation/boundary.cpp	(revision 833b155e089160225200039831a7742be7bb1a16)
@@ -183,5 +183,5 @@
   LineMap LinesOnBoundary;
   TriangleMap TrianglesOnBoundary;
-  Vector *MolCenter = mol->DetermineCenterOfAll();
+  Vector MolCenter = mol->DetermineCenterOfAll();
   Vector helper;
   BoundariesTestPair BoundaryTestPair;
@@ -207,5 +207,5 @@
     // Boundaries stores non-const TesselPoint ref, hence we need iterator here
     for (molecule::iterator iter = mol->begin(); iter != mol->end(); ++iter) {
-      ProjectedVector = (*iter)->getPosition() - (*MolCenter);
+      ProjectedVector = (*iter)->getPosition() - (MolCenter);
       ProjectedVector.ProjectOntoPlane(AxisVector);
 
@@ -233,7 +233,7 @@
           LOG(2, "Keeping new vector due to larger projected distance " << ProjectedVectorNorm << ".");
         } else if (fabs(ProjectedVectorNorm - BoundaryTestPair.first->second.first) < MYEPSILON) {
-          helper = (*iter)->getPosition() - (*MolCenter);
+          helper = (*iter)->getPosition() - (MolCenter);
           const double oldhelperNorm = helper.NormSquared();
-          helper = BoundaryTestPair.first->second.second->getPosition() - (*MolCenter);
+          helper = BoundaryTestPair.first->second.second->getPosition() - (MolCenter);
           if (helper.NormSquared() < oldhelperNorm) {
             BoundaryTestPair.first->second.second = (*iter);
@@ -289,9 +289,9 @@
         {
           Vector SideA, SideB, SideC, SideH;
-          SideA = left->second.second->getPosition() - (*MolCenter);
+          SideA = left->second.second->getPosition() - (MolCenter);
           SideA.ProjectOntoPlane(AxisVector);
           //          LOG(1, "SideA: " << SideA);
 
-          SideB = right->second.second->getPosition() -(*MolCenter);
+          SideB = right->second.second->getPosition() -(MolCenter);
           SideB.ProjectOntoPlane(AxisVector);
           //          LOG(1, "SideB: " << SideB);
@@ -301,5 +301,5 @@
           //          LOG(1, "SideC: " << SideC);
 
-          SideH = runner->second.second->getPosition() -(*MolCenter);
+          SideH = runner->second.second->getPosition() -(MolCenter);
           SideH.ProjectOntoPlane(AxisVector);
           //          LOG(1, "SideH: " << SideH);
@@ -329,5 +329,4 @@
     } while (flag);
   }
-  delete(MolCenter);
   return BoundaryPoints;
 };
@@ -726,5 +725,5 @@
     for (int i = 0; i < NDIM; i++)
       BoxLengths[i] = GreatestDiameter[i];
-    mol->CenterEdge(&BoxLengths);
+    mol->CenterEdge();
   } else {
     BoxLengths[0] = (repetition[0] * GreatestDiameter[0] + repetition[1] * GreatestDiameter[1] + repetition[2] * GreatestDiameter[2]);
@@ -749,10 +748,20 @@
     // set new box dimensions
     LOG(0, "Translating to box with these boundaries.");
-    mol->SetBoxDimension(&BoxLengths);
+    {
+      RealSpaceMatrix domain;
+      for(int i =0; i<NDIM;++i)
+        domain.at(i,i) = BoxLengths[i];
+      World::getInstance().setDomain(domain);
+    }
     mol->CenterInBox();
   }
   delete[] GreatestDiameter;
   // update Box of atoms by boundary
-  mol->SetBoxDimension(&BoxLengths);
+  {
+    RealSpaceMatrix domain;
+    for(int i =0; i<NDIM;++i)
+      domain.at(i,i) = BoxLengths[i];
+    World::getInstance().setDomain(domain);
+  }
   LOG(0, "RESULT: The resulting cell dimensions are: " << BoxLengths[0] << " and " << BoxLengths[1] << " and " << BoxLengths[2] << " with total volume of " << cellvolume << " " << (IsAngstroem ? "angstrom" : "atomiclength") << "^3.");
 };
@@ -804,5 +813,5 @@
 
   // Center filler at origin
-  filler->CenterEdge(&Inserter);
+  filler->CenterEdge();
   const int FillerCount = filler->getAtomCount();
   LOG(2, "INFO: Filler molecule has the following bonds:");
@@ -1099,7 +1108,6 @@
 
   // Center filler at its center of gravity
-  Vector *gravity = filler->DetermineCenterOfGravity();
+  const Vector gravity = filler->DetermineCenterOfGravity();
   filler->CenterAtVector(gravity);
-  delete gravity;
   //const int FillerCount = filler->getAtomCount();
   LOG(2, "INFO: Filler molecule has the following bonds:");
@@ -1165,5 +1173,5 @@
           RandomizeMoleculePositions(Filling, RandomAtomDisplacement, Rotations, random);
           // translation
-          Filling->Translate(&Inserter);
+          Filling->Translate(Inserter);
           // remove out-of-bounds atoms
           const bool status = RemoveAtomsOutsideDomain(Filling);
@@ -1203,5 +1211,5 @@
     RandomizeMoleculePositions(filler, RandomAtomDisplacement, Rotations, random);
     // translation
-    filler->Translate(&firstInserter);
+    filler->Translate(firstInserter);
     // remove out-of-bounds atoms
     RemoveAtomsOutsideDomain(filler);
@@ -1277,5 +1285,5 @@
 
   // Center filler at origin
-  filler->CenterEdge(&Inserter);
+  filler->CenterEdge();
 //  const int FillerCount = filler->getAtomCount();
   LOG(2, "INFO: Filler molecule has the following bonds:");
@@ -1378,5 +1386,5 @@
           RandomizeMoleculePositions(Filling, RandomAtomDisplacement, Rotations, random);
           // translation
-          Filling->Translate(&Inserter);
+          Filling->Translate(Inserter);
           // remove out-of-bounds atoms
           const bool status = RemoveAtomsOutsideDomain(Filling);
@@ -1416,5 +1424,5 @@
     RandomizeMoleculePositions(filler, RandomAtomDisplacement, Rotations, random);
     // translation
-    filler->Translate(&firstInserter);
+    filler->Translate(firstInserter);
     // remove out-of-bounds atoms
     RemoveAtomsOutsideDomain(filler);
Index: src/molecule.cpp
===================================================================
--- src/molecule.cpp	(revision 2d701e7056fe4b1af51c7f20e51cc77ee82ff91b)
+++ src/molecule.cpp	(revision 833b155e089160225200039831a7742be7bb1a16)
@@ -751,15 +751,4 @@
 };
 
-/** Sets the molecule::cell_size to the components of \a *dim (rectangular box)
- * \param *dim vector class
- */
-void molecule::SetBoxDimension(Vector *dim)
-{
-  RealSpaceMatrix domain;
-  for(int i =0; i<NDIM;++i)
-    domain.at(i,i) = dim->at(i);
-  World::getInstance().setDomain(domain);
-};
-
 /** Removes atom from molecule list, but does not delete it.
  * \param *pointer atom to be removed
Index: src/molecule.hpp
===================================================================
--- src/molecule.hpp	(revision 2d701e7056fe4b1af51c7f20e51cc77ee82ff91b)
+++ src/molecule.hpp	(revision 833b155e089160225200039831a7742be7bb1a16)
@@ -273,19 +273,17 @@
   bool CenterInBox();
   bool BoundInBox();
-  void CenterEdge(Vector *max);
+  void CenterEdge();
   void CenterOrigin();
   void CenterPeriodic();
-  void CenterAtVector(Vector *newcenter);
-  void Translate(const Vector *x);
-  void TranslatePeriodically(const Vector *trans);
-  void Mirror(const Vector *x);
-  void Align(Vector *n);
-  void Scale(const double ** const factor);
+  void CenterAtVector(const Vector &newcenter);
+  void Translate(const Vector &x);
+  void TranslatePeriodically(const Vector &trans);
+  void Mirror(const Vector &x);
+  void Align(const Vector &n);
+  void Scale(const double *factor);
   void DeterminePeriodicCenter(Vector &center, const enum HydrogenTreatment _treatment = ExcludeHydrogen);
-  Vector * DetermineCenterOfGravity() const;
-  Vector * DetermineCenterOfAll() const;
-  Vector * DetermineCenterOfBox() const;
+  const Vector DetermineCenterOfGravity() const;
+  const Vector DetermineCenterOfAll() const;
   void SetNameFromFilename(const char *filename);
-  void SetBoxDimension(Vector *dim);
   bool ScanForPeriodicCorrection();
   double VolumeOfConvexEnvelope(bool IsAngstroem);
Index: src/molecule_geometry.cpp
===================================================================
--- src/molecule_geometry.cpp	(revision 2d701e7056fe4b1af51c7f20e51cc77ee82ff91b)
+++ src/molecule_geometry.cpp	(revision 833b155e089160225200039831a7742be7bb1a16)
@@ -58,4 +58,19 @@
 /************************************* Functions for class molecule *********************************/
 
+/** Returns vector pointing to center of the domain.
+ * \return pointer to center of the domain
+ */
+#ifdef HAVE_INLINE
+inline
+#else
+static
+#endif
+const Vector DetermineCenterOfBox()
+{
+  Vector a(0.5,0.5,0.5);
+  const RealSpaceMatrix &M = World::getInstance().getDomain().getM();
+  a *= M;
+  return a;
+}
 
 /** Centers the molecule in the box whose lengths are defined by vector \a *BoxLengths.
@@ -65,17 +80,14 @@
 {
   bool status = true;
-  const Vector *Center = DetermineCenterOfAll();
-  const Vector *CenterBox = DetermineCenterOfBox();
+  const Vector Center = DetermineCenterOfAll();
+  const Vector CenterBox = DetermineCenterOfBox();
   Box &domain = World::getInstance().getDomain();
 
   // go through all atoms
-  const Vector difference = *CenterBox - *Center;
-  Translate(&difference);
+  Translate(CenterBox - Center);
   getAtomSet().transformNodes(boost::bind(&Box::enforceBoundaryConditions,domain,_1));
 
-  delete(Center);
-  delete(CenterBox);
   return status;
-};
+}
 
 
@@ -92,30 +104,22 @@
 
   return status;
-};
+}
 
 /** Centers the edge of the atoms at (0,0,0).
- * \param *out output stream for debugging
- * \param *max coordinates of other edge, specifying box dimensions.
- */
-void molecule::CenterEdge(Vector *max)
+ */
+void molecule::CenterEdge()
 {
   const_iterator iter = begin();
   if (iter != end()) {   //list not empty?
     Vector min = (*begin())->getPosition();
-    *max = min;
     for (;iter != end(); ++iter) { // continue with second if present
       const Vector &currentPos = (*iter)->getPosition();
-      for (size_t i=0;i<NDIM;++i) {
+      for (size_t i=0;i<NDIM;++i)
         if (min[i] > currentPos[i])
           min[i] = currentPos[i];
-        if ((*max)[i] < currentPos[i])
-          (*max)[i] = currentPos[i];
-      }
-    }
-    LOG(1, "INFO: Maximum is " << *max << ", Minimum is " << min << ".");
-    const Vector temp = -1.*min;
-    Translate(&temp);
-  }
-};
+    }
+    Translate(-1.*min);
+  }
+}
 
 /** Centers the center of the atoms at (0,0,0).
@@ -136,39 +140,29 @@
     }
     Center.Scale(-1./(double)Num); // divide through total number (and sign for direction)
-    Translate(&Center);
-  }
-};
+    Translate(Center);
+  }
+}
 
 /** Returns vector pointing to center of all atoms.
  * \return pointer to center of all vector
  */
-Vector * molecule::DetermineCenterOfAll() const
+const Vector molecule::DetermineCenterOfAll() const
 {
   const_iterator iter = begin();  // start at first in list
-  Vector *a = new Vector();
+  Vector a;
   double Num = 0;
 
-  a->Zero();
+  a.Zero();
 
   if (iter != end()) {   //list not empty?
     for (; iter != end(); ++iter) {  // continue with second if present
       Num++;
-      (*a) += (*iter)->getPosition();
-    }
-    a->Scale(1./(double)Num); // divide through total mass (and sign for direction)
+      a += (*iter)->getPosition();
+    }
+    a.Scale(1./(double)Num); // divide through total mass (and sign for direction)
   }
   return a;
-};
-
-/** Returns vector pointing to center of the domain.
- * \return pointer to center of the domain
- */
-Vector * molecule::DetermineCenterOfBox() const
-{
-  Vector *a = new Vector(0.5,0.5,0.5);
-  const RealSpaceMatrix &M = World::getInstance().getDomain().getM();
-  (*a) *= M;
-  return a;
-};
+}
+
 
 /** Returns vector pointing to center of gravity.
@@ -176,12 +170,12 @@
  * \return pointer to center of gravity vector
  */
-Vector * molecule::DetermineCenterOfGravity() const
+const Vector molecule::DetermineCenterOfGravity() const
 {
   const_iterator iter = begin();  // start at first in list
-  Vector *a = new Vector();
+  Vector a;
   Vector tmp;
   double Num = 0;
 
-  a->Zero();
+  a.Zero();
 
   if (iter != end()) {   //list not empty?
@@ -189,11 +183,11 @@
       Num += (*iter)->getType()->getMass();
       tmp = (*iter)->getType()->getMass() * (*iter)->getPosition();
-      (*a) += tmp;
-    }
-    a->Scale(1./Num); // divide through total mass
-  }
-  LOG(1, "INFO: Resulting center of gravity: " << *a << ".");
+      a += tmp;
+    }
+    a.Scale(1./Num); // divide through total mass
+  }
+  LOG(1, "INFO: Resulting center of gravity: " << a << ".");
   return a;
-};
+}
 
 /** Centers the center of gravity of the atoms at (0,0,0).
@@ -205,7 +199,6 @@
   Vector NewCenter;
   DeterminePeriodicCenter(NewCenter);
-  NewCenter *= -1.;
-  Translate(&NewCenter);
-};
+  Translate(-1.*NewCenter);
+}
 
 
@@ -214,9 +207,8 @@
  * \param *center return vector for translation vector
  */
-void molecule::CenterAtVector(Vector *newcenter)
-{
-  const Vector temp = -1.**newcenter;
-  Translate(&temp);
-};
+void molecule::CenterAtVector(const Vector &newcenter)
+{
+  Translate(-1.*newcenter);
+}
 
 /** Calculate the inertia tensor of a the molecule.
@@ -227,5 +219,5 @@
 {
   RealSpaceMatrix InertiaTensor;
-  Vector *CenterOfGravity = DetermineCenterOfGravity();
+  const Vector CenterOfGravity = DetermineCenterOfGravity();
 
   // reset inertia tensor
@@ -235,5 +227,5 @@
   for (const_iterator iter = begin(); iter != end(); ++iter) {
     Vector x = (*iter)->getPosition();
-    x -= *CenterOfGravity;
+    x -= CenterOfGravity;
     const double mass = (*iter)->getType()->getMass();
     InertiaTensor.at(0,0) += mass*(x[1]*x[1] + x[2]*x[2]);
@@ -250,5 +242,4 @@
   LOG(1, "INFO: The inertia tensor of molecule " << getName() <<  " is:" << InertiaTensor);
 
-  delete CenterOfGravity;
   return InertiaTensor;
 }
@@ -261,5 +252,5 @@
 void molecule::RotateToPrincipalAxisSystem(const Vector &Axis)
 {
-  Vector *CenterOfGravity = DetermineCenterOfGravity();
+  const Vector CenterOfGravity = DetermineCenterOfGravity();
   RealSpaceMatrix InertiaTensor = getInertiaTensor();
 
@@ -273,5 +264,5 @@
 
   // obtain first column, eigenvector to biggest eigenvalue
-  Vector BiggestEigenvector(InertiaTensor.column(Eigenvalues.SmallestComponent()));
+  const Vector BiggestEigenvector(InertiaTensor.column(Eigenvalues.SmallestComponent()));
   Vector DesiredAxis(Axis.getNormalized());
 
@@ -287,11 +278,9 @@
   // and rotate
   for (iterator iter = begin(); iter != end(); ++iter) {
-    *(*iter) -= *CenterOfGravity;
+    *(*iter) -= CenterOfGravity;
     (*iter)->setPosition(RotationAxis.rotateVector((*iter)->getPosition(), alpha));
-    *(*iter) += *CenterOfGravity;
+    *(*iter) += CenterOfGravity;
   }
   LOG(0, "STATUS: done.");
-
-  delete CenterOfGravity;
 }
 
@@ -304,10 +293,10 @@
  * x=(**factor) * x (as suggested by comment)
  */
-void molecule::Scale(const double ** const factor)
+void molecule::Scale(const double *factor)
 {
   for (iterator iter = begin(); iter != end(); ++iter) {
     for (size_t j=0;j<(*iter)->getTrajectorySize();j++) {
       Vector temp = (*iter)->getPositionAtStep(j);
-      temp.ScaleAll(*factor);
+      temp.ScaleAll(factor);
       (*iter)->setPositionAtStep(j,temp);
     }
@@ -318,7 +307,7 @@
  * \param trans[] translation vector.
  */
-void molecule::Translate(const Vector *trans)
-{
-  getAtomSet().translate(*trans);
+void molecule::Translate(const Vector &trans)
+{
+  getAtomSet().translate(trans);
 };
 
@@ -327,5 +316,5 @@
  * TODO treatment of trajectories missing
  */
-void molecule::TranslatePeriodically(const Vector *trans)
+void molecule::TranslatePeriodically(const Vector &trans)
 {
   Translate(trans);
@@ -338,7 +327,7 @@
  * \param n[] normal vector of mirror plane.
  */
-void molecule::Mirror(const Vector *n)
-{
-  Plane p(*n,0);
+void molecule::Mirror(const Vector &n)
+{
+  Plane p(n,0);
   getAtomSet().transformNodes(boost::bind(&Plane::mirrorVector,p,_1));
 };
@@ -356,5 +345,5 @@
   Vector Testvector, Translationvector;
   Vector Center;
-  BondGraph *BG = World::getInstance().getBondGraph();
+  const BondGraph * const BG = World::getInstance().getBondGraph();
 
   do {
@@ -407,5 +396,5 @@
 
   Center.Scale(1./static_cast<double>(getAtomCount()));
-  CenterAtVector(&Center);
+  CenterAtVector(Center);
 };
 
@@ -413,8 +402,9 @@
  * \param n[] alignment vector.
  */
-void molecule::Align(Vector *n)
+void molecule::Align(const Vector &n)
 {
   double alpha, tmp;
   Vector z_axis;
+  Vector alignment(n);
   z_axis[0] = 0.;
   z_axis[1] = 0.;
@@ -423,5 +413,5 @@
   // rotate on z-x plane
   LOG(0, "Begin of Aligning all atoms.");
-  alpha = atan(-n->at(0)/n->at(2));
+  alpha = atan(-alignment.at(0)/alignment.at(2));
   LOG(1, "INFO: Z-X-angle: " << alpha << " ... ");
   for (iterator iter = begin(); iter != end(); ++iter) {
@@ -437,11 +427,11 @@
   }
   // rotate n vector
-  tmp = n->at(0);
-  n->at(0) =  cos(alpha) * tmp +  sin(alpha) * n->at(2);
-  n->at(2) = -sin(alpha) * tmp +  cos(alpha) * n->at(2);
-  LOG(1, "alignment vector after first rotation: " << n);
+  tmp = alignment.at(0);
+  alignment.at(0) =  cos(alpha) * tmp +  sin(alpha) * alignment.at(2);
+  alignment.at(2) = -sin(alpha) * tmp +  cos(alpha) * alignment.at(2);
+  LOG(1, "alignment vector after first rotation: " << alignment);
 
   // rotate on z-y plane
-  alpha = atan(-n->at(1)/n->at(2));
+  alpha = atan(-alignment.at(1)/alignment.at(2));
   LOG(1, "INFO: Z-Y-angle: " << alpha << " ... ");
   for (iterator iter = begin(); iter != end(); ++iter) {
@@ -457,10 +447,9 @@
   }
   // rotate n vector (for consistency check)
-  tmp = n->at(1);
-  n->at(1) =  cos(alpha) * tmp +  sin(alpha) * n->at(2);
-  n->at(2) = -sin(alpha) * tmp +  cos(alpha) * n->at(2);
-
-
-  LOG(1, "alignment vector after second rotation: " << n);
+  tmp = alignment.at(1);
+  alignment.at(1) =  cos(alpha) * tmp +  sin(alpha) * alignment.at(2);
+  alignment.at(2) = -sin(alpha) * tmp +  cos(alpha) * alignment.at(2);
+
+  LOG(1, "alignment vector after second rotation: " << alignment);
   LOG(0, "End of Aligning all atoms.");
 };
Index: src/moleculelist.cpp
===================================================================
--- src/moleculelist.cpp	(revision 2d701e7056fe4b1af51c7f20e51cc77ee82ff91b)
+++ src/moleculelist.cpp	(revision 833b155e089160225200039831a7742be7bb1a16)
@@ -229,7 +229,6 @@
       }
       // Center and size
-      Vector *Center = (*ListRunner)->DetermineCenterOfAll();
-      (*out) << "\t" << *Center << "\t" << sqrt(size) << endl;
-      delete(Center);
+      Vector Center = (*ListRunner)->DetermineCenterOfAll();
+      (*out) << "\t" << Center << "\t" << sqrt(size) << endl;
     }
   }
@@ -578,5 +577,10 @@
 //        if (BoxDimension[k] < 1.)
 //          BoxDimension[k] += 1.;
-//      (*ListRunner)->SetBoxDimension(&BoxDimension); // update Box of atoms by boundary
+//      {
+//        RealSpaceMatrix domain;
+//        for(int i =0; i<NDIM;++i)
+//          domain.at(i,i) = BoxDimension[i];
+//        World::getInstance().setDomain(domain);
+//      }
 //      for (int k = 0; k < NDIM; k++) {
 //        BoxDimension[k] = 2.5 * (World::getInstance().getConfig()->GetIsAngstroem() ? 1. : 1. / AtomicLengthToAngstroem);
