Index: orxonox/trunk/src/lib/coord/p_node.cc
===================================================================
--- orxonox/trunk/src/lib/coord/p_node.cc	(revision 4435)
+++ orxonox/trunk/src/lib/coord/p_node.cc	(revision 4436)
@@ -29,4 +29,5 @@
 #include "vector.h"
 #include "null_parent.h"
+#include "load_param.h"
 
 //#include "vector.h"
@@ -45,8 +46,12 @@
   init(NULL);
 
-  NullParent* np = NullParent::getInstance();
-  np->addChild(this);
-}
-
+  NullParent::getInstance()->addChild(this);
+}
+
+PNode::PNode(const TiXmlElement* root)
+{
+  this->init(NULL);
+  NullParent::getInstance()->addChild(this);
+}
 
 
@@ -87,5 +92,4 @@
 }
 
-
 void PNode::init(PNode* parent)
 {
@@ -98,5 +102,8 @@
 }
 
-
+void PNode::loadParams(const TiXmlElement* root)
+{
+  static_cast<BaseObject*>(this)->loadParams(root);
+}
 
 /**
Index: orxonox/trunk/src/lib/coord/p_node.h
===================================================================
--- orxonox/trunk/src/lib/coord/p_node.h	(revision 4435)
+++ orxonox/trunk/src/lib/coord/p_node.h	(revision 4436)
@@ -29,4 +29,5 @@
 //class Quaternion;
 //class Vector;
+class TiXmlElement;
 template<class T> class tList;
 
@@ -49,6 +50,10 @@
  public:
   PNode ();
+  PNode(const TiXmlElement* root);
   PNode (const Vector& absCoordinate, PNode* pNode);
   virtual ~PNode ();
+
+  void loadParams(const TiXmlElement* root);
+
 
   PNode* parent;            //!< a pointer to the parent node
Index: orxonox/trunk/src/lib/lang/base_object.cc
===================================================================
--- orxonox/trunk/src/lib/lang/base_object.cc	(revision 4435)
+++ orxonox/trunk/src/lib/lang/base_object.cc	(revision 4436)
@@ -18,6 +18,5 @@
 
 #include "base_object.h"
-#include "stdincl.h"
-
+#include "load_param.h"
 
 using namespace std;
@@ -25,7 +24,8 @@
 
 /**
-   \brief standard constructor
+   \brief sets the name from a LoadXML-Element
+   \param root the element to load from
 */
-BaseObject::BaseObject () 
+BaseObject::BaseObject(const TiXmlElement* root)
 {
   this->className = NULL;
@@ -34,6 +34,8 @@
 
   this->objectName = NULL;
+
+  if (root)
+    this->loadParams(root);
 }
-
 
 /**
@@ -47,4 +49,14 @@
 }
 
+/**
+   \brief loads parameters
+   \param root the element to load from
+*/
+void BaseObject::loadParams(const TiXmlElement* root)
+{
+  // name setup
+  LoadParam<BaseObject>(root, "name", this, &BaseObject::setName)
+    .describe("the name of the Object at hand");
+}
 
 /**
Index: orxonox/trunk/src/lib/lang/base_object.h
===================================================================
--- orxonox/trunk/src/lib/lang/base_object.h	(revision 4435)
+++ orxonox/trunk/src/lib/lang/base_object.h	(revision 4436)
@@ -9,4 +9,9 @@
 
 #include "class_list.h"
+#ifndef NULL
+#define NULL 0x0
+#endif
+
+class TiXmlElement;
 
 //! A class all other classes are derived from
@@ -14,6 +19,8 @@
 
  public:
-  BaseObject ();
+  BaseObject (const TiXmlElement* root = NULL);
   virtual ~BaseObject ();
+
+  void loadParams(const TiXmlElement* root);
 
   void setClassID(int id);
Index: orxonox/trunk/src/lib/particles/particle_system.cc
===================================================================
--- orxonox/trunk/src/lib/particles/particle_system.cc	(revision 4435)
+++ orxonox/trunk/src/lib/particles/particle_system.cc	(revision 4436)
@@ -85,24 +85,4 @@
    if (this->material)
      delete this->material;
-}
-
-/**
-   \brief sets the Name of the Particle System
-   \param name the Name of the System
-*/
-void ParticleSystem::setName(const char* name)
-{
-  if (this->name)
-    delete this->name;
-  this->name = new char[strlen(name)+1];
-  strcpy(this->name, name);
-}
-
-/**
-   \returns the Name of the ParticleSystem
-*/
-const char* ParticleSystem::getName(void) const
-{
-  return this->name;
 }
 
Index: orxonox/trunk/src/lib/particles/particle_system.h
===================================================================
--- orxonox/trunk/src/lib/particles/particle_system.h	(revision 4435)
+++ orxonox/trunk/src/lib/particles/particle_system.h	(revision 4436)
@@ -68,6 +68,4 @@
 		 PARTICLE_TYPE type = PARTICLE_DEFAULT_TYPE);
   virtual ~ParticleSystem();
-  void setName(const char* name);
-  const char* getName(void) const;
 
   void setType(PARTICLE_TYPE particleType, int count = 0);
