Index: molecuilder/src/atom_trajectoryparticle.cpp
===================================================================
--- molecuilder/src/atom_trajectoryparticle.cpp	(revision 1f2e468815444debcce5bf60df75fd30ef3fc015)
+++ molecuilder/src/atom_trajectoryparticle.cpp	(revision 0d111bb390c55e7e6ced4787e381b7b31e5b130c)
@@ -34,5 +34,5 @@
 {
   for (int i=NDIM;i--;)
-    *temperature += type->mass * Trajectory.U.at(step).x[i]* Trajectory.U.at(step).x[i];
+    *temperature += type->mass * Trajectory.U.at(step)[i]* Trajectory.U.at(step)[i];
 };
 
@@ -49,5 +49,5 @@
   // set forces
   for (int i=NDIM;i++;)
-    Force->Matrix[0][nr][5+i] += 2.*constant*sqrt(Trajectory.R.at(startstep).Distance(&Sprinter->Trajectory.R.at(endstep)));
+    Force->Matrix[0][nr][5+i] += 2.*constant*sqrt(Trajectory.R.at(startstep).Distance(Sprinter->Trajectory.R.at(endstep)));
 };
 
@@ -60,6 +60,6 @@
 {
   for(int d=0;d<NDIM;d++) {
-    Trajectory.U.at(Step).x[d] -= CoGVelocity->x[d];
-    *ActualTemp += 0.5 * type->mass * Trajectory.U.at(Step).x[d] * Trajectory.U.at(Step).x[d];
+    Trajectory.U.at(Step)[d] -= CoGVelocity->at(d);
+    *ActualTemp += 0.5 * type->mass * Trajectory.U.at(Step)[d] * Trajectory.U.at(Step)[d];
   }
 };
@@ -89,7 +89,7 @@
 
   for (int n=NDIM;n--;) {
-    Trajectory.R.at(dest).x[n] = Trajectory.R.at(src).x[n];
-    Trajectory.U.at(dest).x[n] = Trajectory.U.at(src).x[n];
-    Trajectory.F.at(dest).x[n] = Trajectory.F.at(src).x[n];
+    Trajectory.R.at(dest)[n] = Trajectory.R.at(src)[n];
+    Trajectory.U.at(dest)[n] = Trajectory.U.at(src)[n];
+    Trajectory.F.at(dest)[n] = Trajectory.F.at(src)[n];
   }
 };
@@ -105,13 +105,13 @@
   //a = configuration.Deltat*0.5/walker->type->mass;        // (F+F_old)/2m = a and thus: v = (F+F_old)/2m * t = (F + F_old) * a
   for (int d=0; d<NDIM; d++) {
-    Trajectory.F.at(NextStep).x[d] = -Force->Matrix[0][nr][d+5]*(configuration->GetIsAngstroem() ? AtomicLengthToAngstroem : 1.);
-    Trajectory.R.at(NextStep).x[d] = Trajectory.R.at(NextStep-1).x[d];
-    Trajectory.R.at(NextStep).x[d] += configuration->Deltat*(Trajectory.U.at(NextStep-1).x[d]);     // s(t) = s(0) + v * deltat + 1/2 a * deltat^2
-    Trajectory.R.at(NextStep).x[d] += 0.5*configuration->Deltat*configuration->Deltat*(Trajectory.F.at(NextStep).x[d]/type->mass);     // F = m * a and s =
+    Trajectory.F.at(NextStep)[d] = -Force->Matrix[0][nr][d+5]*(configuration->GetIsAngstroem() ? AtomicLengthToAngstroem : 1.);
+    Trajectory.R.at(NextStep)[d] = Trajectory.R.at(NextStep-1)[d];
+    Trajectory.R.at(NextStep)[d] += configuration->Deltat*(Trajectory.U.at(NextStep-1)[d]);     // s(t) = s(0) + v * deltat + 1/2 a * deltat^2
+    Trajectory.R.at(NextStep)[d] += 0.5*configuration->Deltat*configuration->Deltat*(Trajectory.F.at(NextStep)[d]/type->mass);     // F = m * a and s =
   }
   // Update U
   for (int d=0; d<NDIM; d++) {
-    Trajectory.U.at(NextStep).x[d] = Trajectory.U.at(NextStep-1).x[d];
-    Trajectory.U.at(NextStep).x[d] += configuration->Deltat * (Trajectory.F.at(NextStep).x[d]+Trajectory.F.at(NextStep-1).x[d]/type->mass); // v = F/m * t
+    Trajectory.U.at(NextStep)[d] = Trajectory.U.at(NextStep-1)[d];
+    Trajectory.U.at(NextStep)[d] += configuration->Deltat * (Trajectory.F.at(NextStep)[d]+Trajectory.F.at(NextStep-1)[d]/type->mass); // v = F/m * t
   }
   // Update R (and F)
@@ -134,5 +134,5 @@
   *TotalMass += type->mass;  // sum up total mass
   for(int d=0;d<NDIM;d++) {
-    TotalVelocity->x[d] += Trajectory.U.at(Step).x[d]*type->mass;
+    TotalVelocity->at(d) += Trajectory.U.at(Step)[d]*type->mass;
   }
 };
@@ -145,5 +145,5 @@
 void TrajectoryParticle::Thermostat_Woodcock(double ScaleTempFactor, int Step, double *ekin)
 {
-  double *U = Trajectory.U.at(Step).x;
+  Vector &U = Trajectory.U.at(Step);
   if (FixedIon == 0) // even FixedIon moves, only not by other's forces
     for (int d=0; d<NDIM; d++) {
@@ -160,6 +160,6 @@
 void TrajectoryParticle::Thermostat_Gaussian_init(int Step, double *G, double *E)
 {
-  double *U = Trajectory.U.at(Step).x;
-  double *F = Trajectory.F.at(Step).x;
+  Vector &U = Trajectory.U.at(Step);
+  Vector &F = Trajectory.F.at(Step);
   if (FixedIon == 0) // even FixedIon moves, only not by other's forces
     for (int d=0; d<NDIM; d++) {
@@ -177,5 +177,5 @@
 void TrajectoryParticle::Thermostat_Gaussian_least_constraint(int Step, double G_over_E, double *ekin, config *configuration)
 {
-  double *U = Trajectory.U.at(Step).x;
+  Vector &U = Trajectory.U.at(Step);
   if (FixedIon == 0) // even FixedIon moves, only not by other's forces
     for (int d=0; d<NDIM; d++) {
@@ -194,5 +194,5 @@
 {
   double sigma  = sqrt(configuration->TargetTemp/type->mass); // sigma = (k_b T)/m (Hartree/atomicmass = atomiclength/atomictime)
-  double *U = Trajectory.U.at(Step).x;
+  Vector &U = Trajectory.U.at(Step);
   if (FixedIon == 0) { // even FixedIon moves, only not by other's forces
     // throw a dice to determine whether it gets hit by a heat bath particle
@@ -218,5 +218,5 @@
 void TrajectoryParticle::Thermostat_Berendsen(int Step, double ScaleTempFactor, double *ekin, config *configuration)
 {
-  double *U = Trajectory.U.at(Step).x;
+  Vector &U = Trajectory.U.at(Step);
   if (FixedIon == 0) { // even FixedIon moves, only not by other's forces
     for (int d=0; d<NDIM; d++) {
@@ -233,5 +233,5 @@
 void TrajectoryParticle::Thermostat_NoseHoover_init(int Step, double *delta_alpha)
 {
-  double *U = Trajectory.U.at(Step).x;
+  Vector &U = Trajectory.U.at(Step);
   if (FixedIon == 0) { // even FixedIon moves, only not by other's forces
     for (int d=0; d<NDIM; d++) {
@@ -248,5 +248,5 @@
 void TrajectoryParticle::Thermostat_NoseHoover_scale(int Step, double *ekin, config *configuration)
 {
-  double *U = Trajectory.U.at(Step).x;
+  Vector &U = Trajectory.U.at(Step);
   if (FixedIon == 0) { // even FixedIon moves, only not by other's forces
     for (int d=0; d<NDIM; d++) {
