Index: branches/new_class_id/src/lib/coord/p_node.cc
===================================================================
--- branches/new_class_id/src/lib/coord/p_node.cc	(revision 9754)
+++ branches/new_class_id/src/lib/coord/p_node.cc	(revision 9755)
@@ -78,21 +78,19 @@
 PNode::~PNode ()
 {
-  PRINTF(4)("delete %s::%s\n", this->getClassCName(), this->getCName());
+  PRINTF(0)("delete %s::%s\n", this->getClassCName(), this->getCName());
+  this->debugNode(0);
   // remove the Node, delete it's children (if required).
-  std::list<PNode*>::iterator deleteNode;
-  unsigned int size;
   while(!this->children.empty())
   {
-    deleteNode = this->children.begin();
-    size = this->children.size();
+    PNode* deleteNode = this->children.front();
     if ((this->parentMode & PNODE_PROHIBIT_CHILD_DELETE) ||
-        ((*deleteNode)->parentMode & PNODE_PROHIBIT_DELETE_WITH_PARENT))
+        (deleteNode->parentMode & PNODE_PROHIBIT_DELETE_WITH_PARENT))
     {
-      if (this == PNode::nullParent && (*deleteNode)->parentMode & PNODE_REPARENT_TO_NULL)
+      if (this == PNode::nullParent && deleteNode->parentMode & PNODE_REPARENT_TO_NULL)
       {
         PRINTF(4)("%s::%s deletes %s::%s\n",
                   this->getClassCName(), this->getCName(),
-                  (*deleteNode)->getClassCName(), (*deleteNode)->getCName());
-        delete (*deleteNode);
+                  deleteNode->getClassCName(), deleteNode->getCName());
+        delete deleteNode;
       }
       else
@@ -100,6 +98,6 @@
         PRINTF(4)("%s::%s reparents %s::%s\n",
                   this->getClassCName(), this->getCName(),
-                  (*deleteNode)->getClassCName(), (*deleteNode)->getCName());
-        (*deleteNode)->reparent();
+                  deleteNode->getClassCName(), deleteNode->getCName());
+        deleteNode->reparent();
       }
     }
@@ -108,6 +106,6 @@
       PRINTF(4)("%s::%s deletes PNode: %s::%s\n",
                 this->getClassCName(), this->getCName(),
-                (*deleteNode)->getClassCName(), (*deleteNode)->getCName());
-      delete (*deleteNode);
+                deleteNode->getClassCName(), deleteNode->getCName());
+      delete deleteNode;
     }
   }
Index: branches/new_class_id/src/lib/util/color.cc
===================================================================
--- branches/new_class_id/src/lib/util/color.cc	(revision 9754)
+++ branches/new_class_id/src/lib/util/color.cc	(revision 9755)
@@ -30,8 +30,10 @@
 //! Black Color
 const Color Color::black(0,0,0,1);
-//! Orx Color
-const Color Color::orx(.2, .5, .7, .8);  //!< TODO Define the ORX-color :)
-
-
+
+/**
+ * @brief slerps the Color in the HSV color space into the direction of c
+ * @param c the Color to slerp to
+ * @param v the Value to slerp 0 means stay at *this, 1 means at c.
+ */
 void Color::slerpHSV(const Color& c, float v)
 {
@@ -52,4 +54,11 @@
 }
 
+/**
+ * @brief simple slerp wrapper.
+ * @param from from this color
+ * @param to to this one
+ * @param v how much
+ * @see void Color::slerpHSV(const Color& c, float v)
+ */
 Color Color::slerpHSVColor(const Color& from, const Color& to, float v)
 {
@@ -59,5 +68,7 @@
 }
 
-
+/**
+ * @brief nice and simple debug output for the colors (colorless :) )
+ */
 void Color::debug() const
 {
@@ -214,5 +225,10 @@
 
 
-// Needed by rgb2hsv()
+/**
+ * @returns the maximum of r g and a.
+ * @param r Red.
+ * @param g Green
+ * @param b Blue
+ */
 float Color::maxrgb(float r, float g, float b)
 {
@@ -227,6 +243,10 @@
 }
 
-
-// Needed by rgb2hsv()
+/**
+ * @returns the minimum of r g and a.
+ * @param r Red.
+ * @param g Green
+ * @param b Blue
+ */
 float Color::minrgb(float r,float g,float b)
 {
Index: branches/new_class_id/src/lib/util/color.h
===================================================================
--- branches/new_class_id/src/lib/util/color.h	(revision 9754)
+++ branches/new_class_id/src/lib/util/color.h	(revision 9755)
@@ -14,44 +14,78 @@
 #include "vector.h"
 
-//! a very abstract Class that helps transforming Colors into different Systems
+//! A Class that handles Colors.
+/**
+ * A Color is a collection of 4 values:
+ * <ul>
+ *  <li>Red</li>
+ *  <li>Green</li>
+ *  <li>Blue</li>
+ *  <li>Alpha</li>
+ * </ul>
+ * With these four values any color of the entire spectrum can be defined.
+ *
+ * By default a Color lies between 0 and 1 for each component.
+ * for example [1,0,0,.5] means red and half visible.
+ */
 class Color
 {
 public:
+  /** @param r red, @param g green @param b blue @param a alpha @brief constructs a Color. */
   Color(float r = 0.0f, float g = 0.0f, float b = 0.0f, float a = 1.0f) { _rgba[0] = r; _rgba[1] = g; _rgba[2] = b; _rgba[3] = a; };
+  /** @param c Color @brief copy constructor */
   Color(const Color& c) { _rgba[0] = c.r(); _rgba[1] = c.g(); _rgba[2] = c.b(); _rgba[3] = c.a(); }
 
+  /** @param c the Color to set to this color @returns the copied color */
   inline const Color& operator=(const Color& c) { _rgba[0] = c.r(); _rgba[1] = c.g(); _rgba[2] = c.b(); _rgba[3] = c.a(); return *this; };
+  /** @param c the color to compare @returns true on match. @brief compares two colors */
   inline bool operator==(const Color& c) const { return (r() == c.r() && g() == c.g() && b() == c.b() && a() == c.a()); };
 
+  /** @returns the i'th Value of the Color @param i part of the color 0:r, 1:g, 2:b, 3:a */
   inline float& operator[](unsigned int i) { return _rgba[i]; }
+  /** @returns a Constant Value of the color. @param i part of the color 0:r, 1:g, 2:b, 3:a */
   inline const float& operator[](unsigned int i) const { return _rgba[i]; }
 
+  /** @returns the red part. */
   inline float r() const { return _rgba[0]; }
+  /** @returns the reference to the red part */
   inline float& r() { return _rgba[0]; }
+  /** @returns the green part. */
   inline float g() const { return _rgba[1]; }
+  /** @returns the reference to the green part */
   inline float& g() { return _rgba[1]; }
+  /** @returns the blue part */
   inline float b() const { return _rgba[2]; }
+  /** @returns the reference to the blue part */
   inline float& b() { return _rgba[2]; }
+  /** @returns the alpha part */
   inline float a() const { return _rgba[3]; }
+  /** @returns the reference to the alpha part */
   inline float& a() { return _rgba[3]; }
 
 
-
-
+  /** @param r red, @param g green @param b blue @param a alpha @brief sets the color. */
   void setColor(float r = 0.0f, float g = 0.0f, float b = 0.0f, float a = 1.0f) { _rgba[0] = r; _rgba[1] = g; _rgba[2] = b; _rgba[3] = a; };
+  /** @param c the color to set. @brief sets the color. */
   void setColor(const Color& c) { r() = c.r();  g()= c.g(); b() = c.b(); a() = c.a(); };
 
+  /** @returns the distance to the color @param c the color to calculate the distance to. */
   inline float dist(const Color& c) const { return (sqrt((r()-c.r())*(r()-c.r()) + (g()-c.g())*(g()-c.g()) + (b()-c.b())*(b()-c.b()) + (a()-c.a())*(a()-c.a()))); }
   /// Maths
+  /** @param c the color to add to this one @returns the two added colors */
   inline const Color& operator+=(const Color& c) { r()+=c.r(); g()+=c.g(); b()+=c.b(); a()+=c.a(); return *this; };
+  /** @returns the result of the added colors @param c the color to add */
   inline Color operator+(const Color& c) const { return Color(r()+c.r(), g()+c.g(), b()+c.b(), a()+c.a()); };
+  /** @param c the color to substract to this one @returns the two substracted colors */
   inline const Color& operator-=(const Color& c) { r()-=c.r(); g()-=c.g(); b()-=c.b(); a()-=c.a(); return *this; };
+  /** @returns the result of the substracted colors @param c the color to substract */
   inline Color operator-(const Color& c) const { return Color(r()-c.r(), g()-c.g(), b()-c.b(), a()-c.a()); };
+  /** @param v the multiplier @returns the Color multiplied by v */
   inline const Color& operator*=(float v) { r()*=v, g()*=v, b()*=v, a()*=v; return *this; };
+  /** @param v the multiplier @returns a multiplied color */
   inline Color operator*(float v) const { return Color(r()*v, g()*v, b()*v, a()*v); };
 
+  /** @param c the color to slerp to @param v how much to slerp [0:1] @brief moves the color into the direction of another color */
   void slerp(const Color& c, float v) { *this += (c - *this) * v; };
   void slerpHSV(const Color& c, float v);
-
   static Color slerpHSVColor(const Color& from, const Color& to, float v);
 
@@ -75,13 +109,7 @@
   static const Color white;
   static const Color black;
-  static const Color orx;
 
 private:
-  float       _rgba[4]; //!< Color Values
-
-  /*  float       _r;     //!< Red Value.
-  float       _g;     //!< Green Value.
-  float       _b;     //!< Blue Value.
-  float       _a;     //!< Alpha Value.*/
+  float       _rgba[4]; //!< Color Values [r,g,b,a] (red green blue alpha)
 };
 
