Index: molecuilder/src/molecule.cpp
===================================================================
--- molecuilder/src/molecule.cpp	(revision 71910a24319c2c88370002a1fc0df43dc3cb64cc)
+++ molecuilder/src/molecule.cpp	(revision 1f591b9dbc283e4bbacbd1b8b28dcda0b5f66a92)
@@ -220,6 +220,5 @@
 //  Log() << Verbose(3) << "Begin of AddHydrogenReplacementAtom." << endl;
   // create vector in direction of bond
-  InBondvector.CopyVector(&TopReplacement->x);
-  InBondvector.SubtractVector(&TopOrigin->x);
+  InBondvector = TopReplacement->x - TopOrigin->x;
   bondlength = InBondvector.Norm();
 
@@ -240,5 +239,5 @@
     matrix = ReturnFullMatrixforSymmetric(cell_size);
     Orthovector1.MatrixMultiplication(matrix);
-    InBondvector.SubtractVector(&Orthovector1); // subtract just the additional translation
+    InBondvector.SubtractVector(Orthovector1); // subtract just the additional translation
     Free(&matrix);
     bondlength = InBondvector.Norm();
@@ -265,5 +264,5 @@
       FirstOtherAtom = World::getInstance().createAtom();    // new atom
       FirstOtherAtom->type = elemente->FindElement(1);  // element is Hydrogen
-      FirstOtherAtom->v.CopyVector(&TopReplacement->v); // copy velocity
+      FirstOtherAtom->v = TopReplacement->v; // copy velocity
       FirstOtherAtom->FixedIon = TopReplacement->FixedIon;
       if (TopReplacement->type->Z == 1) { // neither rescale nor replace if it's already hydrogen
@@ -274,6 +273,6 @@
       }
       InBondvector.Scale(&BondRescale);   // rescale the distance vector to Hydrogen bond length
-      FirstOtherAtom->x.CopyVector(&TopOrigin->x); // set coordination to origin ...
-      FirstOtherAtom->x.AddVector(&InBondvector);  // ... and add distance vector to replacement atom
+      FirstOtherAtom->x = TopOrigin->x; // set coordination to origin ...
+      FirstOtherAtom->x = InBondvector;  // ... and add distance vector to replacement atom
       AllWentWell = AllWentWell && AddAtom(FirstOtherAtom);
 //      Log() << Verbose(4) << "Added " << *FirstOtherAtom << " at: ";
@@ -316,5 +315,5 @@
         }
       } else {
-        Orthovector1.GetOneNormalVector(&InBondvector);
+        Orthovector1.GetOneNormalVector(InBondvector);
       }
       //Log() << Verbose(3)<< "Orthovector1: ";
@@ -331,7 +330,7 @@
       FirstOtherAtom->type = elemente->FindElement(1);
       SecondOtherAtom->type = elemente->FindElement(1);
-      FirstOtherAtom->v.CopyVector(&TopReplacement->v); // copy velocity
+      FirstOtherAtom->v = TopReplacement->v; // copy velocity
       FirstOtherAtom->FixedIon = TopReplacement->FixedIon;
-      SecondOtherAtom->v.CopyVector(&TopReplacement->v); // copy velocity
+      SecondOtherAtom->v = TopReplacement->v; // copy velocity
       SecondOtherAtom->FixedIon = TopReplacement->FixedIon;
       FirstOtherAtom->father = NULL;  // we are just an added hydrogen with no father
@@ -388,9 +387,9 @@
       SecondOtherAtom->type = elemente->FindElement(1);
       ThirdOtherAtom->type = elemente->FindElement(1);
-      FirstOtherAtom->v.CopyVector(&TopReplacement->v); // copy velocity
+      FirstOtherAtom->v = TopReplacement->v; // copy velocity
       FirstOtherAtom->FixedIon = TopReplacement->FixedIon;
-      SecondOtherAtom->v.CopyVector(&TopReplacement->v); // copy velocity
+      SecondOtherAtom->v = TopReplacement->v; // copy velocity
       SecondOtherAtom->FixedIon = TopReplacement->FixedIon;
-      ThirdOtherAtom->v.CopyVector(&TopReplacement->v); // copy velocity
+      ThirdOtherAtom->v = TopReplacement->v; // copy velocity
       ThirdOtherAtom->FixedIon = TopReplacement->FixedIon;
       FirstOtherAtom->father = NULL;  //  we are just an added hydrogen with no father
@@ -399,5 +398,5 @@
 
       // we need to vectors orthonormal the InBondvector
-      AllWentWell = AllWentWell && Orthovector1.GetOneNormalVector(&InBondvector);
+      AllWentWell = AllWentWell && Orthovector1.GetOneNormalVector(InBondvector);
 //      Log() << Verbose(3) << "Orthovector1: ";
 //      Orthovector1.Output(out);
@@ -426,10 +425,10 @@
       factors[1] = f;
       factors[2] = 0.;
-      FirstOtherAtom->x.LinearCombinationOfVectors(&InBondvector, &Orthovector1, &Orthovector2, factors);
+      FirstOtherAtom->x.LinearCombinationOfVectors(InBondvector, Orthovector1, Orthovector2, factors);
       factors[1] = -0.5*f;
       factors[2] = g;
-      SecondOtherAtom->x.LinearCombinationOfVectors(&InBondvector, &Orthovector1, &Orthovector2, factors);
+      SecondOtherAtom->x.LinearCombinationOfVectors(InBondvector, Orthovector1, Orthovector2, factors);
       factors[2] = -g;
-      ThirdOtherAtom->x.LinearCombinationOfVectors(&InBondvector, &Orthovector1, &Orthovector2, factors);
+      ThirdOtherAtom->x.LinearCombinationOfVectors(InBondvector, Orthovector1, Orthovector2, factors);
 
       // rescale each to correct BondDistance
@@ -439,7 +438,7 @@
 
       // and relative to *origin atom
-      FirstOtherAtom->x.AddVector(&TopOrigin->x);
-      SecondOtherAtom->x.AddVector(&TopOrigin->x);
-      ThirdOtherAtom->x.AddVector(&TopOrigin->x);
+      FirstOtherAtom->x += TopOrigin->x;
+      SecondOtherAtom->x += TopOrigin->x;
+      ThirdOtherAtom->x += TopOrigin->x;
 
       // ... and add to molecule
@@ -1022,5 +1021,5 @@
     Log() << Verbose(5) << "Center of Gravity: " << CenterOfGravity << endl;
     Log() << Verbose(5) << "Other Center of Gravity: " << OtherCenterOfGravity << endl;
-    if (CenterOfGravity.DistanceSquared(&OtherCenterOfGravity) > threshold*threshold) {
+    if (CenterOfGravity.DistanceSquared(OtherCenterOfGravity) > threshold*threshold) {
       Log() << Verbose(4) << "Centers of gravity don't match." << endl;
       result = false;
