Index: trunk/src/lib/Makefile.am
===================================================================
--- trunk/src/lib/Makefile.am	(revision 6073)
+++ trunk/src/lib/Makefile.am	(revision 6074)
@@ -34,5 +34,4 @@
 
 libORXlibs_a_SOURCES =  coord/p_node.cc \
-                        coord/null_parent.cc \
                         lang/base_object.cc \
                         lang/class_list.cc \
@@ -47,5 +46,4 @@
 
 noinst_HEADERS =        coord/p_node.h \
-                        coord/null_parent.h \
                         lang/base_object.h \
                         graphics/render2D/element_2d.h \
Index: trunk/src/lib/coord/null_parent.cc
===================================================================
--- trunk/src/lib/coord/null_parent.cc	(revision 6073)
+++ 	(revision )
@@ -1,47 +1,0 @@
-
-
-/*
-   orxonox - the future of 3D-vertical-scrollers
-
-   Copyright (C) 2004 orx
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   ### File Specific:
-   main-programmer: Patrick Boenzli
-   co-programmer: ...
-*/
-
-#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_PARENT_NODE
-
-#include "null_parent.h"
-
-using namespace std;
-
-NullParent* NullParent::singletonRef = NULL;
-
-/**
- *  creates the one and only NullParent
- * @param absCoordinate the cordinate of the Parent (normally Vector(0,0,0))
-*/
-NullParent::NullParent (const Vector& absCoordinate) : PNode (absCoordinate, NULL)
-{
-  this->setClassID(CL_NULL_PARENT, "NullParent");
-  this->setName("NullParent");
-
-  this->setParentMode(PNODE_ALL);
-  NullParent::singletonRef = this;
-}
-
-
-/**
- *  standard deconstructor
-*/
-NullParent::~NullParent ()
-{
-  //delete singletonRef;
-  NullParent::singletonRef = NULL;
-}
Index: trunk/src/lib/coord/null_parent.h
===================================================================
--- trunk/src/lib/coord/null_parent.h	(revision 6073)
+++ 	(revision )
@@ -1,28 +1,0 @@
-/*!
- * @file null_parent.h
-  *  Definition of the NullParent, the higest PNode of them all.
-*/
-
-
-#ifndef _NULL_PARENT_H
-#define _NULL_PARENT_H
-
-#include "p_node.h"
-
-//! The top joint of all PNode's every PNode is somehow connected to this one.
-class NullParent : public PNode {
-
-  public:
-    /** @returns a Pointer to the only object of this Class */
-    inline static NullParent* getInstance() { if (!singletonRef) singletonRef = new NullParent();  return singletonRef; };
-    virtual ~NullParent ();
-
-  private:
-    NullParent (const Vector& absCoordinate = Vector(0.0, 0.0, 0.0));
-
-  private:
-    static NullParent* singletonRef;        //!< A reference to the NullParent
-
-};
-
-#endif /* _NULL_PARENT_H */
Index: trunk/src/lib/coord/p_node.cc
===================================================================
--- trunk/src/lib/coord/p_node.cc	(revision 6073)
+++ trunk/src/lib/coord/p_node.cc	(revision 6074)
@@ -17,5 +17,4 @@
 
 #include "p_node.h"
-#include "null_parent.h"
 
 #include "load_param.h"
@@ -34,27 +33,33 @@
  * @brief standard constructor
  */
-PNode::PNode ()
+PNode::PNode (PNode* parent)
 {
   init();
-
-  NullParent::getInstance()->addChild(this);
-}
-
-
-/**
- * @brief constructor with coodinates
- * @param absCoordinate the Absolute coordinate of the Object
- * @param parent The parent-node of this node.
- */
-PNode::PNode (const Vector& absCoor, PNode* parent )
-{
-  this->init();
-
-  if (likely(parent != NULL))
-    parent->addChild (this);
-
-  this->setAbsCoor(absCoor);
-}
-
+  if (parent != NULL)
+    parent->addChild(this);
+}
+
+/**
+ * @brief initializes a PNode
+ * @param parent the parent for this PNode
+ */
+void PNode::init()
+{
+  this->setClassID(CL_PARENT_NODE, "PNode");
+
+  this->bRelCoorChanged = true;
+  this->bRelDirChanged = true;
+  this->parent = NULL;
+  this->parentMode = PNODE_PARENT_MODE_DEFAULT;
+  this->bActive = true;
+
+  // smooth-movers
+  this->toCoordinate = NULL;
+  this->toDirection = NULL;
+  this->bias = 1.0;
+}
+
+// NullParent Reference
+PNode* PNode::nullParent = NULL;
 
 /**
@@ -86,5 +91,5 @@
           ((*deleteNode)->parentMode & PNODE_PROHIBIT_DELETE_WITH_PARENT))
       {
-        if (this == NullParent::getInstance() && (*deleteNode)->parentMode & PNODE_REPARENT_TO_NULLPARENT)
+        if (this == PNode::getNullParent() && (*deleteNode)->parentMode & PNODE_REPARENT_TO_NULLPARENT)
           delete (*deleteNode);
         else
@@ -110,24 +115,4 @@
 
 /**
- * @brief initializes a PNode
- * @param parent the parent for this PNode
- */
-void PNode::init()
-{
-  this->setClassID(CL_PARENT_NODE, "PNode");
-
-  this->bRelCoorChanged = true;
-  this->bRelDirChanged = true;
-  this->parent = NULL;
-  this->parentMode = PNODE_PARENT_MODE_DEFAULT;
-  this->bActive = true;
-
-  // smooth-movers
-  this->toCoordinate = NULL;
-  this->toDirection = NULL;
-  this->bias = 1.0;
-}
-
-/**
  * @brief loads parameters of the PNode
  * @param root the XML-element to load the properties of
@@ -160,5 +145,5 @@
     LOAD_PARAM_START_CYCLE(root, element);
     {
-      LoadParam_CYCLE(element, "parent", this, PNode, addChild)
+      LoadParam_CYCLE(element, "child", this, PNode, addChild)
           .describe("adds a new Child to the current Node.");
 
@@ -506,9 +491,5 @@
 {
   if (child != NULL)
-  {
    child->removeNode();
-//   this->children->remove(child);
-//   child->parent = NULL;
-  }
 }
 
@@ -624,5 +605,5 @@
 {
   if (this->parentMode & PNODE_REPARENT_TO_NULLPARENT)
-    this->setParent(NullParent::getInstance());
+    this->setParent(PNode::getNullParent());
   else if (this->parentMode & PNODE_REPARENT_TO_PARENTS_PARENT && this->parent != NULL)
     this->setParent(this->parent->getParent());
@@ -881,5 +862,5 @@
     {
       // drawing the Dependency graph
-     if (this != NullParent::getInstance())
+     if (this != PNode::getNullParent())
       {
        glBegin(GL_LINES);
Index: trunk/src/lib/coord/p_node.h
===================================================================
--- trunk/src/lib/coord/p_node.h	(revision 6073)
+++ trunk/src/lib/coord/p_node.h	(revision 6074)
@@ -72,6 +72,5 @@
 class PNode : virtual public BaseObject {
  public:
-  PNode ();
-  PNode (const Vector& absCoor, PNode* pNode);
+  PNode (PNode* parent = PNode::getNullParent());
   virtual ~PNode ();
 
@@ -155,4 +154,6 @@
   void removeNodeModeFlags(unsigned short nodeFlags);
 
+  /** @returns the NullParent, the (main) ROOT of the PNode Tree. If it does not yet exist, it will be created. */
+  static PNode* getNullParent()  { return (PNode::nullParent != NULL || (PNode::nullParent = new PNode(NULL)) != NULL)? PNode::nullParent : NULL; };
 
   void updateNode (float dt);
@@ -204,4 +205,7 @@
   bool               bActive;            //!< If the Node is Active (for cutting off the rest of the tree in update).
   unsigned short     parentMode;         //!< the mode of the binding
+
+
+  static PNode*      nullParent;         //!< The ROOT of the main PNode Tree.
 };
 
Index: trunk/src/lib/sound/sound_engine.cc
===================================================================
--- trunk/src/lib/sound/sound_engine.cc	(revision 6073)
+++ trunk/src/lib/sound/sound_engine.cc	(revision 6074)
@@ -290,5 +290,5 @@
   // INITIALIZING THE DEVICE:
 
-#ifdef AL_VERSION_1_1
+#ifndef AL_VERSION_1_1
   ALubyte deviceName[] =
 #else
