Index: orxonox/branches/particleEngine/src/lib/coord/null_parent.cc
===================================================================
--- orxonox/branches/particleEngine/src/lib/coord/null_parent.cc	(revision 3956)
+++ orxonox/branches/particleEngine/src/lib/coord/null_parent.cc	(revision 3957)
@@ -54,5 +54,5 @@
   this->parent = this;
   this->mode = PNODE_ALL;
-  *this->absCoordinate = absCoordinate;
+  this->absCoordinate = absCoordinate;
   this->setName("NullParent");
 }
@@ -80,7 +80,7 @@
 {
 
-  PRINTF(4)("NullParent::update - (%f, %f, %f)\n", this->absCoordinate->x, this->absCoordinate->y, this->absCoordinate->z);
-  *this->absCoordinate = *this->relCoordinate;
-  *this->absDirection = parent->getAbsDir () * *this->relDirection;
+  PRINTF(4)("NullParent::update - (%f, %f, %f)\n", this->absCoordinate.x, this->absCoordinate.y, this->absCoordinate.z);
+  this->absCoordinate = this->relCoordinate;
+  this->absDirection = parent->getAbsDir () * this->relDirection;
 
   tIterator<PNode>* iterator = this->children->getIterator();
Index: orxonox/branches/particleEngine/src/lib/coord/p_node.cc
===================================================================
--- orxonox/branches/particleEngine/src/lib/coord/p_node.cc	(revision 3956)
+++ orxonox/branches/particleEngine/src/lib/coord/p_node.cc	(revision 3957)
@@ -60,13 +60,11 @@
   this->init(parent);
 
-  *this->absCoordinate = absCoordinate;
+  this->absCoordinate = absCoordinate;
 
   if (likely(parent != NULL))
   {
-    *this->relCoordinate = *this->absCoordinate - parent->getAbsCoor ();
+    this->relCoordinate = this->absCoordinate - parent->getAbsCoor();
     parent->addChild (this);
   }
-  else 
-    this->relCoordinate = new Vector();
 }
 
@@ -89,10 +87,4 @@
   delete []this->objectName;
 
-  delete this->relCoordinate;
-  delete this->absCoordinate;
-  delete this->relDirection;
-  delete this->absDirection;
-  delete this->lastAbsCoordinate;
-  delete this->diffCoordinate;
 }
 
@@ -108,11 +100,4 @@
   this->objectName = NULL;
   this->time = 1.0; /* set time to 1 to make divisions by zero impossible */
-
-  this->absCoordinate = new Vector();
-  this->relCoordinate = new Vector();
-  this->absDirection = new Quaternion();
-  this->relDirection = new Quaternion();
-  this->lastAbsCoordinate = new Vector();
-  this->diffCoordinate = new Vector();
 }
 
@@ -158,5 +143,5 @@
 {
   this->bRelCoorChanged = true;
-  *this->relCoordinate = relCoord;
+  this->relCoordinate = relCoord;
 }
 
@@ -182,5 +167,5 @@
 {
   this->bAbsCoorChanged = true;
-  *this->absCoordinate = absCoord;
+  this->absCoordinate = absCoord;
 }
 
@@ -211,9 +196,9 @@
   if( unlikely(this->bAbsCoorChanged))
     {
-      *this->absCoordinate = *this->absCoordinate + shift;
+      this->absCoordinate = this->absCoordinate + shift;
     }
   else 
     {
-      *this->relCoordinate = *this->relCoordinate + shift;
+      this->relCoordinate = this->relCoordinate + shift;
       this->bRelCoorChanged = true;
     }
@@ -241,5 +226,5 @@
 {
   this->bRelCoorChanged = true;
-  *this->relDirection = relDir;
+  this->relDirection = relDir;
 }
 
@@ -264,5 +249,5 @@
 {
   this->bAbsDirChanged = true;
-  *this->absDirection = absDir;
+  this->absDirection = absDir;
 }
 
@@ -293,5 +278,5 @@
 {
   this->bRelDirChanged = true;
-  *this->relDirection = *this->relDirection * shift;
+  this->relDirection = this->relDirection * shift;
 }
 
@@ -303,6 +288,5 @@
 float PNode::getSpeed() const
 {
-  *this->diffCoordinate = *this->absCoordinate - *this->lastAbsCoordinate;
-  return this->diffCoordinate->len() / this->time;
+  return (this->absCoordinate - this->lastAbsCoordinate).len() / this->time;
 }
 
@@ -312,5 +296,5 @@
 Vector PNode::getVelocity() const
 {
-  return (*this->absCoordinate - *this->lastAbsCoordinate) / this->time;
+  return (this->absCoordinate - this->lastAbsCoordinate) / this->time;
 }
 
@@ -439,7 +423,7 @@
 void PNode::update (float dt)
 {
-  *this->lastAbsCoordinate = *this->absCoordinate;
+  this->lastAbsCoordinate = this->absCoordinate;
   this->time = dt;
-  PRINTF(4)("PNode::update - %s - (%f, %f, %f)\n", this->objectName, this->absCoordinate->x, this->absCoordinate->y, this->absCoordinate->z);
+  PRINTF(4)("PNode::update - %s - (%f, %f, %f)\n", this->objectName, this->absCoordinate.x, this->absCoordinate.y, this->absCoordinate.z);
 
 
@@ -449,5 +433,5 @@
 	{
 	  /* if you have set the absolute coordinates this overrides all other changes */
-	  *this->relCoordinate = *this->absCoordinate - parent->getAbsCoor ();
+	  this->relCoordinate = this->absCoordinate - parent->getAbsCoor ();
 	}
       if( likely(this->bRelCoorChanged) /*&& this->timeStamp != DataTank::timeStamp*/)
@@ -462,5 +446,5 @@
 	    }
 	    else */
-	  *this->absCoordinate = parent->getAbsCoor() + *this->relCoordinate;	      /* update the current absCoordinate */
+	  this->absCoordinate = parent->getAbsCoor() + this->relCoordinate;	      /* update the current absCoordinate */
 	}
     }
@@ -471,10 +455,10 @@
 	{
 	  /* if you have set the absolute coordinates this overrides all other changes */
-	  *this->relDirection = *this->absDirection - parent->getAbsDir();
+	  this->relDirection = this->absDirection - parent->getAbsDir();
 	}
       else if( likely(this->bRelDirChanged) /*&& this->timeStamp != DataTank::timeStamp*/)
 	{
 	  /* update the current absDirection - remember * means rotation around sth.*/
-	  *this->absDirection = parent->getAbsDir() * *this->relDirection;
+	  this->absDirection = parent->getAbsDir() * this->relDirection;
 	}
     }
@@ -485,5 +469,5 @@
 	{
 	  /* if you have set the absolute coordinates this overrides all other changes */
-	  *this->relCoordinate = *this->absCoordinate - parent->getAbsCoor ();
+	  this->relCoordinate = this->absCoordinate - parent->getAbsCoor ();
 	}
       else if( likely(this->bRelCoorChanged) /*&& this->timeStamp != DataTank::timeStamp*/)
@@ -493,5 +477,5 @@
 	    *this->absCoordinate = *this->relCoordinate;
 	    else*/
-	  *this->absCoordinate = parent->getAbsCoor() + parent->getAbsDir().apply(*this->relCoordinate);	      /* update the current absCoordinate */
+	  this->absCoordinate = parent->getAbsCoor() + parent->getAbsDir().apply(this->relCoordinate);	      /* update the current absCoordinate */
 	}
     }
@@ -547,7 +531,7 @@
 {
   PRINTF(2)("PNode::debug() - absCoord: (%f, %f, %f)\n", 
-	 this->absCoordinate->x, 
-	 this->absCoordinate->y,
-	 this->absCoordinate->z);
+	 this->absCoordinate.x, 
+	 this->absCoordinate.y,
+	 this->absCoordinate.z);
 }
 
@@ -558,5 +542,5 @@
   for debug purposes realy usefull, not used to work properly
 */
-void PNode::setName (char* newName)
+void PNode::setName (const char* newName)
 {
   this->objectName = new char[strlen(newName)+1];
@@ -568,5 +552,5 @@
   \brief gets the name of the node
 */
-char* PNode::getName ()
+const char* PNode::getName ()
 {
   return this->objectName;
Index: orxonox/branches/particleEngine/src/lib/coord/p_node.h
===================================================================
--- orxonox/branches/particleEngine/src/lib/coord/p_node.h	(revision 3956)
+++ orxonox/branches/particleEngine/src/lib/coord/p_node.h	(revision 3957)
@@ -57,13 +57,13 @@
 
 
-  inline Vector* getRelCoor () const { return this->relCoordinate; }
+  inline Vector getRelCoor () const { return this->relCoordinate; }
   void setRelCoor (const Vector& relCoord);
-  inline Vector getAbsCoor () const { return *this->absCoordinate; }
+  inline Vector getAbsCoor () const { return this->absCoordinate; }
   void setAbsCoor (const Vector& absCoord);
   void shiftCoor (const Vector& shift);
 
-  inline Quaternion getRelDir () const { return *this->relDirection; }
+  inline Quaternion getRelDir () const { return this->relDirection; }
   void setRelDir (const Quaternion& relDir);
-  inline Quaternion getAbsDir () const { return *this->absDirection; }
+  inline Quaternion getAbsDir () const { return this->absDirection; }
   void setAbsDir (const Quaternion& absDir);
   void shiftDir (const Quaternion& shift);
@@ -86,6 +86,6 @@
   void processTick (float dt);
 
-  void setName (char* newName);
-  char* getName ();
+  void setName (const char* newName);
+  const char* getName ();
 
 
@@ -100,8 +100,8 @@
   bool bRelDirChanged;     //!< If Relative Direction has changed since last time we checked
 
-  Vector* relCoordinate;    //!< coordinates relative to the parent
-  Vector* absCoordinate;    //!< absolute coordinates in the world ( from (0,0,0) )
-  Quaternion* relDirection; //!< direction relative to the parent
-  Quaternion* absDirection; //!< absolute direvtion in the world ( from (0,0,1) )
+  Vector relCoordinate;    //!< coordinates relative to the parent
+  Vector absCoordinate;    //!< absolute coordinates in the world ( from (0,0,0) )
+  Quaternion relDirection; //!< direction relative to the parent
+  Quaternion absDirection; //!< absolute direvtion in the world ( from (0,0,1) )
 
   int mode;                //!< the mode of the binding
@@ -110,6 +110,6 @@
   void init(PNode* parent);
 
-  Vector* lastAbsCoordinate; //!< this is used for speedcalculation, it stores the last coordinate
-  Vector* diffCoordinate;    //!< this is stored here for performance reasons, difference to the last vector
+  Vector lastAbsCoordinate; //!< this is used for speedcalculation, it stores the last coordinate
+  Vector diffCoordinate;    //!< this is stored here for performance reasons, difference to the last vector
   float time;                //!< time since last update
 };
Index: orxonox/branches/particleEngine/src/track_manager.cc
===================================================================
--- orxonox/branches/particleEngine/src/track_manager.cc	(revision 3956)
+++ orxonox/branches/particleEngine/src/track_manager.cc	(revision 3957)
@@ -312,5 +312,5 @@
   PNode* tmpNode = (PNode*)node;
 
-  if (tmpNode->getRelCoor()->z < 0)
+  if (tmpNode->getRelCoor().z < 0)
     return 0;
   else 
@@ -333,5 +333,5 @@
   PNode* tmpNode = (PNode*)node;
 
-  Vector nodeRelCoord = *tmpNode->getRelCoor();
+  Vector nodeRelCoord = tmpNode->getRelCoor();
   float minDist = 100000000;
   int childNumber = 0;
Index: orxonox/branches/particleEngine/src/track_node.cc
===================================================================
--- orxonox/branches/particleEngine/src/track_node.cc	(revision 3956)
+++ orxonox/branches/particleEngine/src/track_node.cc	(revision 3957)
@@ -41,10 +41,10 @@
 
 
-TrackNode::TrackNode (Vector* absCoordinate)
+TrackNode::TrackNode (const Vector& absCoordinate)
 {
   this->parent = NullParent::getInstance();
   this->trackManager = TrackManager::getInstance();
   this->setMode(PNODE_ALL);
-  this->absCoordinate = absCoordinate;
+  this->setAbsCoor(absCoordinate);
 }
 
Index: orxonox/branches/particleEngine/src/track_node.h
===================================================================
--- orxonox/branches/particleEngine/src/track_node.h	(revision 3956)
+++ orxonox/branches/particleEngine/src/track_node.h	(revision 3957)
@@ -22,5 +22,5 @@
  public:
   TrackNode ();
-  TrackNode (Vector* absCoordinate);
+  TrackNode (const Vector& absCoordinate);
 
   virtual ~TrackNode ();
Index: orxonox/branches/particleEngine/src/world_entities/camera.cc
===================================================================
--- orxonox/branches/particleEngine/src/world_entities/camera.cc	(revision 3956)
+++ orxonox/branches/particleEngine/src/world_entities/camera.cc	(revision 3957)
@@ -139,8 +139,8 @@
   if (tmpFovy > .001)
     this->fovy += (this->toFovy - this->fovy) * dt;
-  Vector tmpPos = (this->toRelCoor - *this->getRelCoor()) * dt;
+  Vector tmpPos = (this->toRelCoor - this->getRelCoor()) * dt;
   if (tmpPos.len() >= .001)
     {
-      tmpPos = tmpPos + *this->getRelCoor();
+      tmpPos = tmpPos + this->getRelCoor();
       this->setRelCoor(tmpPos);
     }
Index: orxonox/branches/particleEngine/src/world_entities/player.cc
===================================================================
--- orxonox/branches/particleEngine/src/world_entities/player.cc	(revision 3956)
+++ orxonox/branches/particleEngine/src/world_entities/player.cc	(revision 3957)
@@ -188,11 +188,11 @@
   //orthDirection = orthDirection.cross (direction);
 
-  if( this->bUp && this->getRelCoor()->x < 20)
+  if( this->bUp && this->getRelCoor().x < 20)
     accel = accel+(direction*acceleration);
-  if( this->bDown && this->getRelCoor()->x > -5)
+  if( this->bDown && this->getRelCoor().x > -5)
     accel = accel-(direction*acceleration);
-  if( this->bLeft &&  TrackManager::getInstance()->getWidth() > -this->getRelCoor()->z*2)
+  if( this->bLeft &&  TrackManager::getInstance()->getWidth() > -this->getRelCoor().z*2)
     accel = accel - (orthDirection*acceleration); 
-  if( this->bRight &&  TrackManager::getInstance()->getWidth() > this->getRelCoor()->z*2)
+  if( this->bRight &&  TrackManager::getInstance()->getWidth() > this->getRelCoor().z*2)
     accel = accel + (orthDirection*acceleration);
   if( this->bAscend )
