Index: trunk/src/lib/coord/null_parent.h
===================================================================
--- trunk/src/lib/coord/null_parent.h	(revision 5769)
+++ trunk/src/lib/coord/null_parent.h	(revision 5770)
@@ -19,5 +19,5 @@
 
   private:
-    NullParent (const Vector& absCoordinate = Vector());
+    NullParent (const Vector& absCoordinate = Vector(0.0, 0.0, 0.0));
 
   private:
Index: trunk/src/lib/coord/p_node.cc
===================================================================
--- trunk/src/lib/coord/p_node.cc	(revision 5769)
+++ trunk/src/lib/coord/p_node.cc	(revision 5770)
@@ -85,23 +85,21 @@
  *    then deletes the Element.
  */
+
+#include "class_list.h"
 PNode::~PNode ()
 {
   // remove the Node, delete it's children.
-  tIterator<PNode>* iterator = this->children->getIterator();
-  PNode* child = iterator->firstElement();
-
-  while( child != NULL)
-  {
-    delete child;
-    child = iterator->nextElement();
-  }
-  delete iterator;
-
+  PNode* tmp;
+  while (this->children.size() > 0)
+  {
+    tmp = this->children.front();
+    this->children.pop_front();
+      delete tmp;
+  }
   if (this->parent != NULL)
-  {
-    this->parent->children->remove(this);
-    this->parent = NULL;
-  }
-  delete this->children;
+   {
+     this->parent->children.remove(this);
+     this->parent = NULL;
+   }
 
   // remove all other allocated memory.
@@ -121,5 +119,4 @@
   this->setClassID(CL_PARENT_NODE, "PNode");
 
-  this->children = new tList<PNode>();
   this->bRelCoorChanged = true;
   this->bRelDirChanged = true;
@@ -467,9 +464,9 @@
     {
       PRINTF(5)("PNode::addChild() - reparenting node: removing it and adding it again\n");
-      child->parent->children->remove(child);
+      child->parent->children.remove(child);
     }
   child->parent = this;
   if (unlikely(this != NULL))
-    this->children->add(child);
+    this->children.push_back(child);
   child->parentCoorChanged();
 }
@@ -509,15 +506,10 @@
 void PNode::removeNode()
 {
-  tIterator<PNode>* iterator = this->children->getIterator();
-  PNode* pn = iterator->firstElement();
-
-  while( pn != NULL)
-  {
-      NullParent::getInstance()->addChild(pn);
-      pn = iterator->nextElement();
-    }
-  delete iterator;
+  list<PNode*>::iterator child;
+  for (child = this->children.begin(); child != this->children.end(); child ++)
+    NullParent::getInstance()->addChild(*child);
+
   if (this->parent != NULL)
-    this->parent->children->remove(this);
+    this->parent->children.remove(this);
 }
 
@@ -686,20 +678,17 @@
     }
 
-    if(this->children->getSize() > 0)
+    if(this->children.size() > 0)
     {
-      tIterator<PNode>* iterator = this->children->getIterator();
-      PNode* pn = iterator->firstElement();
-      while( pn != NULL)
+      list<PNode*>::iterator child;
+      for (child = this->children.begin(); child != this->children.end(); child ++)
       {
         /* if this node has changed, make sure, that all children are updated also */
         if( likely(this->bRelCoorChanged))
-          pn->parentCoorChanged ();
+          (*child)->parentCoorChanged ();
         if( likely(this->bRelDirChanged))
-          pn->parentDirChanged ();
-
-        pn->updateNode(dt);
-        pn = iterator->nextElement();
+          (*child)->parentDirChanged ();
+
+        (*child)->updateNode(dt);
       }
-      delete iterator;
     }
     this->velocity = (this->absCoordinate - this->lastAbsCoordinate) / dt;
@@ -712,12 +701,7 @@
 {
   nodes++;
-  tIterator<PNode>* it = this->children->getIterator();
-  PNode* node = it->firstElement();
-  while(node != NULL)
-  {
-    node->countChildNodes(nodes);
-    node = it->nextElement();
-  }
-
+  list<PNode*>::const_iterator child;
+  for (child = this->children.begin(); child != this->children.end(); child ++)
+    (*child)->countChildNodes(nodes);
 }
 
@@ -733,5 +717,5 @@
   for (unsigned int i = 0; i < level; i++)
     PRINT(0)(" |");
-  if (this->children->getSize() > 0)
+  if (this->children.size() > 0)
     PRINT(0)(" +");
   else
@@ -757,16 +741,12 @@
   if (depth >= 2 || depth == 0)
   {
-    tIterator<PNode>* iterator = this->children->getIterator();
-      //PNode* pn = this->children->enumerate ();
-    PNode* pn = iterator->firstElement();
-    while( pn != NULL)
+    list<PNode*>::const_iterator child;
+    for (child = this->children.begin(); child != this->children.end(); child ++)
     {
       if (depth == 0)
-        pn->debugNode(0, level + 1);
+        (*child)->debugNode(0, level + 1);
       else
-        pn->debugNode(depth - 1, level +1);
-      pn = iterator->nextElement();
+        (*child)->debugNode(depth - 1, level +1);
     }
-    delete iterator;
   }
 }
@@ -839,7 +819,6 @@
     /* rotate the current color in HSV space around 20 degree */
     Vector childColor =  Color::HSVtoRGB(Color::RGBtoHSV(color)+Vector(20,0,.0));
-    tIterator<PNode>* iterator = this->children->getIterator();
-    PNode* pn = iterator->firstElement();
-    while( pn != NULL)
+    list<PNode*>::const_iterator child;
+    for (child = this->children.begin(); child != this->children.end(); child ++)
     {
       // drawing the Dependency graph
@@ -852,17 +831,15 @@
                   this->getAbsCoor ().z);
         glColor3f(childColor.x, childColor.y, childColor.z);
-        glVertex3f(pn->getAbsCoor ().x,
-                   pn->getAbsCoor ().y,
-                   pn->getAbsCoor ().z);
+        glVertex3f((*child)->getAbsCoor ().x,
+                   (*child)->getAbsCoor ().y,
+                   (*child)->getAbsCoor ().z);
         glEnd();
       }
       /* if we want to draw the children too */
       if (depth == 0) /* -> all of them */
-        pn->debugDraw(0, size, childColor, level+1);
+        (*child)->debugDraw(0, size, childColor, level+1);
       else            /* -> only the Next one */
-        pn->debugDraw(depth - 1, size, childColor, level +1);
-      pn = iterator->nextElement();
+        (*child)->debugDraw(depth - 1, size, childColor, level +1);
     }
-    delete iterator;
   }
   if (level == 0)
Index: trunk/src/lib/coord/p_node.h
===================================================================
--- trunk/src/lib/coord/p_node.h	(revision 5769)
+++ trunk/src/lib/coord/p_node.h	(revision 5770)
@@ -21,4 +21,5 @@
 #include "base_object.h"
 #include "vector.h"
+#include <list>
 
 // FORWARD DECLARATION
@@ -155,27 +156,27 @@
 
  private:
-  bool            bRelCoorChanged;    //!< If Relative Coordinate has changed since last time we checked
-  bool            bRelDirChanged;     //!< If Relative Direction has changed since last time we checked
+  bool               bRelCoorChanged;    //!< If Relative Coordinate has changed since last time we checked
+  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) )
 
-  Vector          prevRelCoordinate;  //!< The last Relative Coordinate from the last update-Cycle.
-  Vector          lastAbsCoordinate;  //!< this is used for speedcalculation, it stores the last coordinate
-  Quaternion      prevRelDirection;   //!< The last Relative Direciton from the last update-Cycle.
-//  Quaternion      lastAbsDirection;
+  Vector             prevRelCoordinate;  //!< The last Relative Coordinate from the last update-Cycle.
+  Vector             lastAbsCoordinate;  //!< this is used for speedcalculation, it stores the last coordinate
+  Quaternion         prevRelDirection;   //!< The last Relative Direciton from the last update-Cycle.
+//  Quaternion         lastAbsDirection;
 
-  Vector          velocity;           //!< Saves the velocity.
+  Vector             velocity;           //!< Saves the velocity.
 
-  Vector*         toCoordinate;       //!< a position to which to iterate. (This is used in conjunction with setParentSoft.and set*CoorSoft)
-  Quaternion*     toDirection;        //!< a direction to which to iterate. (This is used in conjunction with setParentSoft and set*DirSoft)
-  float           bias;               //!< how fast to iterate to the given position (default is 1)
+  Vector*            toCoordinate;       //!< a position to which to iterate. (This is used in conjunction with setParentSoft.and set*CoorSoft)
+  Quaternion*        toDirection;        //!< a direction to which to iterate. (This is used in conjunction with setParentSoft and set*DirSoft)
+  float              bias;               //!< how fast to iterate to the given position (default is 1)
 
-  PNode*          parent;             //!< a pointer to the parent node
-  tList<PNode>*   children;           //!< list of the children of this PNode
+  PNode*             parent;             //!< a pointer to the parent node
+  std::list<PNode*>  children;           //!< list of the children of this PNode
 
-  unsigned int    parentMode;         //!< the mode of the binding
+  unsigned int       parentMode;         //!< the mode of the binding
 };
 
