Index: data/contentcreation/pps/FabianLandau/mover/environments/mover.cc
===================================================================
--- data/contentcreation/pps/FabianLandau/mover/environments/mover.cc	(revision 4844)
+++ data/contentcreation/pps/FabianLandau/mover/environments/mover.cc	(revision 4855)
@@ -56,5 +56,5 @@
     
     this->originCoor = Vector(0, 0, 0);
-    this->originDir = Quaternion(0, Vector(0, 0, 0));
+    this->originDir = Vector(0, 0, 0);
 
     this->soundSource_starting.setSourceNode(this);
@@ -69,5 +69,5 @@
         
     this->originCoor = this->getAbsCoor();
-    this->originDir = this->getAbsDir();
+    this->originDir = this->getAbsDir().getRotation();
 
     PRINTF(0)("1_3\n");
@@ -291,6 +291,6 @@
     if (this->stations)
     {
-        this->shiftCoor(this->stations->getVelocity(this->station) * dt);
-        this->setAbsDir(this->originDir * (this->stations->getRotation(this->station) * this->time));
+        this->setAbsCoor(this->originCoor + this->stations->getVelocity(this->station) * this->time);
+        this->setAbsDir(VtoQ(this->originDir + this->stations->getRotation(this->station) * this->time));
     }
     
@@ -304,13 +304,13 @@
             this->time = this->stations->getMovingTime(this->station) - this->time;
             this->originCoor = this->originCoor - this->stations->getRelTargetCoor(this->station);
-            this->originDir = this->originDir / this->stations->getRelTargetDir(this->station);
+            this->originDir = this->originDir - this->stations->getRelTargetDir(this->station);
         }
     }
 
-    if (/*this->reachedStationsTarget(dt) || */(this->stations && (this->time >= 1.1 * this->stations->getMovingTime(this->station))))
+    if (/*this->reachedStationsTarget(dt) || */(this->stations && (this->time >= 1.0 * this->stations->getMovingTime(this->station))))
 //    if (this->stations && (this->time >= this->stations->getMovingTime(this->station)))
     {
         this->setAbsCoor(this->originCoor + this->stations->getRelTargetCoor(this->station));
-        this->setAbsDir(this->originDir * this->stations->getRelTargetDir(this->station));
+        this->setAbsDir(VtoQ(this->originDir + this->stations->getRelTargetDir(this->station)));
 
         if (this->stations->getEndingSound(this->station).loaded())
@@ -319,5 +319,5 @@
 
         this->originCoor = this->originCoor + this->stations->getRelTargetCoor(this->station);
-        this->originDir = this->originDir * this->stations->getRelTargetDir(this->station);
+        this->originDir = this->originDir + this->stations->getRelTargetDir(this->station);
         
         return STAY;
@@ -345,5 +345,5 @@
     if (this->stations)
         if ((this->getAbsCoor() - (this->originCoor + this->stations->getRelTargetCoor(this->station))).len() <= 1.2 * (this->stations->getVelocity(this->station) * dt).len())
-            if (fabs((this->getAbsDir() / (this->originDir * this->stations->getRelTargetDir(this->station))).w) <= 1.2 * fabs(this->stations->getRotation(this->station).w * dt))
+            if ((this->getAbsDir().getRotation() - (this->originDir + this->stations->getRelTargetDir(this->station))).len() <= 1.2 * (this->stations->getRotation(this->station) * dt).len())
                 return true;
 
Index: data/contentcreation/pps/FabianLandau/mover/environments/mover.h
===================================================================
--- data/contentcreation/pps/FabianLandau/mover/environments/mover.h	(revision 4844)
+++ data/contentcreation/pps/FabianLandau/mover/environments/mover.h	(revision 4855)
@@ -46,4 +46,6 @@
         int stay();
         bool reachedStationsTarget(float dt);
+        Quaternion VtoQ(Vector v) { return Quaternion(v.x, v.y, v.z); }
+        Vector QtoV(Quaternion Q) { return Vector(); }
 
         bool                        bLoop;
@@ -64,5 +66,5 @@
         int                         repeatsToGo;
         Vector                      originCoor;
-        Quaternion                  originDir;
+        Vector                      originDir;
 
         OrxSound::SoundSource       soundSource_starting;
Index: data/contentcreation/pps/FabianLandau/mover/environments/mover_station.cc
===================================================================
--- data/contentcreation/pps/FabianLandau/mover/environments/mover_station.cc	(revision 4844)
+++ data/contentcreation/pps/FabianLandau/mover/environments/mover_station.cc	(revision 4855)
@@ -28,5 +28,5 @@
     this->rank = 0;
     this->relTargetCoor = Vector(0, 0, 0);
-    this->relTargetDir = Quaternion(0, Vector(0, 0, 0));
+    this->relTargetDir = Vector(0, 0, 0);
     this->delay = 0;
     this->movingTime = 0;
@@ -60,6 +60,6 @@
         .defaultValues(0, 0, 0);
     LoadParam(root, "rel-target-dir", this, MoverStation, setRelTargetDir)
-        .describe("The relative direction of the stations target.")
-        .defaultValues(0, 0, 0, 0);
+        .describe("The relative direction of the stations target in all axes (roll/pitch/yaw).")
+        .defaultValues(0, 0, 0);
     LoadParam(root, "delay", this, MoverStation, setDelay)
         .describe("The amount of time the mover waits, before he starts moving.")
@@ -99,5 +99,5 @@
     {
         this->relTargetCoor = Vector(0, 0, 0);
-        this->relTargetDir = Quaternion(0, Vector(0, 0, 0));
+        this->relTargetDir = Vector(0, 0, 0);
     }
 }
Index: data/contentcreation/pps/FabianLandau/mover/environments/mover_station.h
===================================================================
--- data/contentcreation/pps/FabianLandau/mover/environments/mover_station.h	(revision 4844)
+++ data/contentcreation/pps/FabianLandau/mover/environments/mover_station.h	(revision 4855)
@@ -25,6 +25,6 @@
 
         void setRank(int id) { this->rank = id; }
-        void setRelTargetCoor(float x, float y, float z) { this->relTargetCoor = Vector(x, y, z); }
-        void setRelTargetDir(float w, float x, float y, float z) { this->relTargetDir = Quaternion(w, Vector(x, y, z)); }
+        void setRelTargetCoor(float x = 0, float y = 0, float z = 0) { this->relTargetCoor = Vector(x, y, z); }
+        void setRelTargetDir(float wx = 0, float wy = 0, float wz = 0) { this->relTargetDir = Vector(wx, wy, wz); }
         void setDelay(float t) { this->delay = t; }
         void setMovingTime(float t) { this->movingTime = t; }
@@ -45,5 +45,5 @@
         int                     rank;
         Vector                  relTargetCoor;
-        Quaternion              relTargetDir;
+        Vector              	relTargetDir;
         float                   delay;
         float                   movingTime;
Index: data/contentcreation/pps/FabianLandau/mover/environments/mover_station_list.cc
===================================================================
--- data/contentcreation/pps/FabianLandau/mover/environments/mover_station_list.cc	(revision 4844)
+++ data/contentcreation/pps/FabianLandau/mover/environments/mover_station_list.cc	(revision 4855)
@@ -236,8 +236,8 @@
 }
 
-Quaternion MoverStationList::getTotalRelDir(MoverStation *station)
+Vector MoverStationList::getTotalRelDir(MoverStation *station)
 {
     MoverStationListElement *temp = this->first;
-    Quaternion totalRelDir = Quaternion(0, Vector(0, 0, 0));
+    Vector totalRelDir = Vector(0, 0, 0);
     
     if (station)
@@ -247,5 +247,5 @@
             while (temp != 0)
             {
-                totalRelDir *= temp->station->relTargetDir;
+                totalRelDir += temp->station->relTargetDir;
                 if (temp->station == station)
                     break;
@@ -260,5 +260,5 @@
                 while (temp->next != 0)
                 {
-                    totalRelDir *= temp->next->station->relTargetDir;
+                    totalRelDir += temp->next->station->relTargetDir;
                     if (temp->next->station == station)
                         break;
@@ -336,5 +336,5 @@
 }
 
-Quaternion MoverStationList::getRelTargetDir(MoverStation *station)
+Vector MoverStationList::getRelTargetDir(MoverStation *station)
 {
     if (station)
@@ -345,5 +345,5 @@
                 return station->relTargetDir;
             else
-                return station->relTargetDir.inverse();
+                return station->relTargetDir * -1;
         }
         else
@@ -354,34 +354,30 @@
             {
                 if (this->goForward)
-                    return (station->relTargetDir / this->getTotalRelDir(moveToStation)).inverse();
+                    return (station->relTargetDir - this->getTotalRelDir(moveToStation)) * -1;
                 else
-                    return (station->relTargetDir / this->getTotalRelDir(moveToStation));
-            }
-        }
-    }
-    
-    return Quaternion(0, Vector(0, 0, 0));
+                    return station->relTargetDir - this->getTotalRelDir(moveToStation);
+            }
+        }
+    }
+    
+    return Vector(0, 0, 0);
 }
 
 Vector MoverStationList::getVelocity(MoverStation *station)
 {
-    Vector velocity = Vector(0, 0, 0);
-
     if (station)
         if (station->movingTime != 0)
-            velocity = this->getRelTargetCoor(station) / station->movingTime;
-
-    return velocity;
-}
-
-Quaternion MoverStationList::getRotation(MoverStation *station)
-{
-    Quaternion rotation = Quaternion(0, Vector(0, 0, 0));
-
+            return this->getRelTargetCoor(station) / station->movingTime;
+
+    return Vector(0, 0, 0);
+}
+
+Vector MoverStationList::getRotation(MoverStation *station)
+{
     if (station)
         if (station->movingTime != 0)
-            rotation = Quaternion(this->getRelTargetDir(station).w / station->movingTime, this->getRelTargetDir(station).v);
-
-    return rotation;
+            return this->getRelTargetDir(station) / station->movingTime;
+
+    return Vector(0, 0, 0);
 }
 
Index: data/contentcreation/pps/FabianLandau/mover/environments/mover_station_list.h
===================================================================
--- data/contentcreation/pps/FabianLandau/mover/environments/mover_station_list.h	(revision 4844)
+++ data/contentcreation/pps/FabianLandau/mover/environments/mover_station_list.h	(revision 4855)
@@ -32,5 +32,5 @@
         MoverStation *getNextStation(MoverStation *station);
         Vector getTotalRelCoor(MoverStation *station);
-        Quaternion getTotalRelDir(MoverStation *station);
+        Vector getTotalRelDir(MoverStation *station);
         bool isOpen(MoverStation *station);
         bool isClosed(MoverStation *station);
@@ -38,10 +38,10 @@
 
         Vector getRelTargetCoor(MoverStation *station);
-        Quaternion getRelTargetDir(MoverStation *station);
+        Vector getRelTargetDir(MoverStation *station);
         float getDelay(MoverStation *station) { return station->delay; }
         float getStayOpenTime(MoverStation *station) { return station->stayOpenTime; }
         float getMovingTime(MoverStation *station) { return station->movingTime; }
         Vector getVelocity(MoverStation *station);
-        Quaternion getRotation(MoverStation *station);
+        Vector getRotation(MoverStation *station);
         OrxSound::SoundBuffer getStartingSound(MoverStation *station);
         OrxSound::SoundBuffer getMovingSound(MoverStation *station);
