Index: src/Parser/MpqcParser.cpp
===================================================================
--- src/Parser/MpqcParser.cpp	(revision be97a841b19bbe05e88f3d3ac69c9cb5cd562f10)
+++ src/Parser/MpqcParser.cpp	(revision d74077614bf2a27f66c91bf6bce70250442a0463)
@@ -60,5 +60,5 @@
   // calculate center
   for (vector<atom *>::iterator runner = allatoms.begin();runner != allatoms.end(); ++runner)
-    center += (*runner)->x;
+    center += (*runner)->getPosition();
   center.Scale(1./allatoms.size());
 
@@ -108,5 +108,5 @@
   // calculate center
   for (vector<atom *>::iterator runner = allatoms.begin();runner != allatoms.end(); ++runner)
-    center += (*runner)->x;
+    center += (*runner)->getPosition();
   center.Scale(1./allatoms.size());
 
Index: src/Parser/PcpParser.cpp
===================================================================
--- src/Parser/PcpParser.cpp	(revision be97a841b19bbe05e88f3d3ac69c9cb5cd562f10)
+++ src/Parser/PcpParser.cpp	(revision d74077614bf2a27f66c91bf6bce70250442a0463)
@@ -460,5 +460,5 @@
   PlaneWaveSpecifics.MaxPsiDouble = PlaneWaveSpecifics.PsiMaxNoDown = PlaneWaveSpecifics.PsiMaxNoUp = PlaneWaveSpecifics.PsiType = 0;
   for (vector<atom *>::iterator runner = allatoms.begin(); runner != allatoms.end(); ++runner) {
-    PlaneWaveSpecifics.MaxPsiDouble += (*runner)->type->NoValenceOrbitals;
+    PlaneWaveSpecifics.MaxPsiDouble += (*runner)->getType()->NoValenceOrbitals;
   }
   cout << PlaneWaveSpecifics.MaxPsiDouble << endl;
@@ -495,5 +495,5 @@
   // insert all found elements into the map
   for (vector<atom *>::iterator AtomRunner = allatoms.begin();AtomRunner != allatoms.end();++AtomRunner) {
-    Inserter = PresentElements.insert(pair<int, int>((*AtomRunner)->type->Z, 1));
+    Inserter = PresentElements.insert(pair<int, int>((*AtomRunner)->getType()->Z, 1));
     if (!Inserter.second) // increase if present
       Inserter.first->second += 1;
@@ -526,13 +526,13 @@
   int nr = 0;
   for (vector<atom *>::iterator AtomRunner = allatoms.begin();AtomRunner != allatoms.end();++AtomRunner) {
-    Inserter = ZtoCountMap.insert( pair<int, int>((*AtomRunner)->type->Z, 1) );
+    Inserter = ZtoCountMap.insert( pair<int, int>((*AtomRunner)->getType()->Z, 1) );
     if (!Inserter.second)
       Inserter.first->second += 1;
-    const int Z = (*AtomRunner)->type->Z;
+    const int Z = (*AtomRunner)->getType()->Z;
     *file << "Ion_Type" << ZtoIndexMap[Z] << "_" << ZtoCountMap[Z] << "\t"  << fixed << setprecision(9) << showpoint;
-    *file << (*AtomRunner)->x[0] << "\t" << (*AtomRunner)->x[1] << "\t" << (*AtomRunner)->x[2];
+    *file << (*AtomRunner)->at(0) << "\t" << (*AtomRunner)->at(1) << "\t" << (*AtomRunner)->at(2);
     *file << "\t" << (*AtomRunner)->FixedIon;
-    if ((*AtomRunner)->v.Norm() > MYEPSILON)
-      *file << "\t" << scientific << setprecision(6) << (*AtomRunner)->v[0] << "\t" << (*AtomRunner)->v[1] << "\t" << (*AtomRunner)->v[2] << "\t";
+    if ((*AtomRunner)->AtomicVelocity.Norm() > MYEPSILON)
+      *file << "\t" << scientific << setprecision(6) << (*AtomRunner)->AtomicVelocity[0] << "\t" << (*AtomRunner)->AtomicVelocity[1] << "\t" << (*AtomRunner)->AtomicVelocity[2] << "\t";
     *file << " # molecule nr " << nr++ << endl;
   }
Index: src/Parser/TremoloParser.cpp
===================================================================
--- src/Parser/TremoloParser.cpp	(revision be97a841b19bbe05e88f3d3ac69c9cb5cd562f10)
+++ src/Parser/TremoloParser.cpp	(revision d74077614bf2a27f66c91bf6bce70250442a0463)
@@ -140,13 +140,13 @@
       case TremoloKey::x :
         // for the moment, assume there are always three dimensions
-        *file << currentAtom->x[0] << "\t";
-        *file << currentAtom->x[1] << "\t";
-        *file << currentAtom->x[2] << "\t";
+        *file << currentAtom->at(0) << "\t";
+        *file << currentAtom->at(1) << "\t";
+        *file << currentAtom->at(2) << "\t";
         break;
       case TremoloKey::u :
         // for the moment, assume there are always three dimensions
-        *file << currentAtom->v[0] << "\t";
-        *file << currentAtom->v[1] << "\t";
-        *file << currentAtom->v[2] << "\t";
+        *file << currentAtom->AtomicVelocity[0] << "\t";
+        *file << currentAtom->AtomicVelocity[1] << "\t";
+        *file << currentAtom->AtomicVelocity[2] << "\t";
         break;
       case TremoloKey::Type :
@@ -225,4 +225,5 @@
   string word;
   int oldId;
+  double tmp;
 
   lineStream << line;
@@ -232,13 +233,14 @@
       case TremoloKey::x :
         // for the moment, assume there are always three dimensions
-        lineStream >> newAtom->x[0];
-        lineStream >> newAtom->x[1];
-        lineStream >> newAtom->x[2];
+        for (int i=0;i<NDIM;i++) {
+          lineStream >> tmp;
+          newAtom->set(i, tmp);
+        }
         break;
       case TremoloKey::u :
         // for the moment, assume there are always three dimensions
-        lineStream >> newAtom->v[0];
-        lineStream >> newAtom->v[1];
-        lineStream >> newAtom->v[2];
+        lineStream >> newAtom->AtomicVelocity[0];
+        lineStream >> newAtom->AtomicVelocity[1];
+        lineStream >> newAtom->AtomicVelocity[2];
         break;
       case TremoloKey::Type :
Index: src/Parser/XyzParser.cpp
===================================================================
--- src/Parser/XyzParser.cpp	(revision be97a841b19bbe05e88f3d3ac69c9cb5cd562f10)
+++ src/Parser/XyzParser.cpp	(revision d74077614bf2a27f66c91bf6bce70250442a0463)
@@ -38,4 +38,5 @@
   int numberOfAtoms;
   char commentBuffer[512], type[3];
+  double tmp;
 
   // the first line tells number of atoms, the second line is always a comment
@@ -46,5 +47,9 @@
   for (int i = 0; i < numberOfAtoms; i++) {
     newAtom = World::getInstance().createAtom();
-    *file >> type >> ws >> newAtom->x[0] >> ws >> newAtom->x[1] >> ws >> newAtom->x[2];
+    *file >> type;
+    for (int j=0;j<NDIM;j++) {
+      *file >> tmp;
+      newAtom->set(j, tmp);
+    }
     newAtom->setType(World::getInstance().getPeriode()->FindElement(type));
   }
@@ -72,5 +77,5 @@
   vector<atom*> atoms = World::getInstance().getAllAtoms();
   for(vector<atom*>::iterator it = atoms.begin(); it != atoms.end(); it++) {
-    *file << noshowpoint << (*it)->getType()->symbol << "\t" << (*it)->x[0] << "\t" << (*it)->x[1] << "\t" << (*it)->x[2] << endl;
+    *file << noshowpoint << (*it)->getType()->symbol << "\t" << (*it)->at(0) << "\t" << (*it)->at(1) << "\t" << (*it)->at(2) << endl;
   }
 }
