Index: trunk/src/lib/physics/fields/field.cc
===================================================================
--- trunk/src/lib/physics/fields/field.cc	(revision 9406)
+++ trunk/src/lib/physics/fields/field.cc	(revision 9869)
@@ -23,7 +23,8 @@
 #include "util/loading/load_param.h"
 
+ObjectListDefinition(Field);
 
 /**
- *  standard constructor
+ * @brief standard constructor
 */
 Field::Field ()
@@ -33,7 +34,6 @@
 
 /**
- *  standard deconstructor
-
-*/
+ * @brief standard deconstructor
+ */
 Field::~Field ()
 {
@@ -42,9 +42,9 @@
 
 /**
-  \brief initializes a Field
-*/
+  * @brief initializes a Field
+ */
 void Field::init()
 {
-  this->setClassID(CL_FIELD, "Field");
+  this->registerObject(this, Field::_objectList);
   this->setMagnitude(1);
   this->setAttenuation(0);
@@ -54,5 +54,5 @@
 
 /**
-* @param root The XML-element to load settings from
+ * @param root The XML-element to load settings from
  */
 void Field::loadParams(const TiXmlElement* root)
Index: trunk/src/lib/physics/fields/field.h
===================================================================
--- trunk/src/lib/physics/fields/field.h	(revision 9406)
+++ trunk/src/lib/physics/fields/field.h	(revision 9869)
@@ -16,9 +16,9 @@
 /*!
  * @file field.h
-  *  abstract definition of a Physical Field
-
-    This is a totally abstract class, that only enables different Physical Fields to
-    exist on a common Level.
-*/
+ * abstract definition of a Physical Field
+ *
+ * This is a totally abstract class, that only enables different Physical Fields to
+ * exist on a common Level.
+ */
 
 #ifndef _FIELD_H
@@ -34,4 +34,5 @@
 class Field : public PNode
 {
+  ObjectListDeclaration(Field);
  public:
   Field();
Index: trunk/src/lib/physics/fields/gravity.cc
===================================================================
--- trunk/src/lib/physics/fields/gravity.cc	(revision 9406)
+++ trunk/src/lib/physics/fields/gravity.cc	(revision 9869)
@@ -21,11 +21,12 @@
 #include "util/loading/factory.h"
 
+#include "class_id_DEPRECATED.h"
+ObjectListDefinitionID(Gravity, CL_FIELD_GRAVITY);
 
-
-CREATE_FACTORY(Gravity, CL_FIELD_GRAVITY);
+CREATE_FACTORY(Gravity);
 
 Gravity::Gravity(const TiXmlElement* root)
 {
-  this->setClassID(CL_FIELD_GRAVITY, "Gravity");
+  this->registerObject(this, Gravity::_objectList);
 
   if (root != NULL)
Index: trunk/src/lib/physics/fields/gravity.h
===================================================================
--- trunk/src/lib/physics/fields/gravity.h	(revision 9406)
+++ trunk/src/lib/physics/fields/gravity.h	(revision 9869)
@@ -16,4 +16,5 @@
 //! A class for ...
 class Gravity : public Field {
+  ObjectListDeclaration(Gravity);
 
  public:
Index: trunk/src/lib/physics/fields/point_gravity.cc
===================================================================
--- trunk/src/lib/physics/fields/point_gravity.cc	(revision 9406)
+++ trunk/src/lib/physics/fields/point_gravity.cc	(revision 9869)
@@ -20,4 +20,7 @@
 
 
+#include "class_id_DEPRECATED.h"
+ObjectListDefinitionID(PointGravity, CL_FIELD_POINT_GRAVITY);
+
 
 /**
@@ -27,5 +30,5 @@
 PointGravity::PointGravity ()
 {
-   this->setClassID(CL_FIELD_POINT_GRAVITY, "PointGravity");
+  this->registerObject(this, PointGravity::_objectList);
 }
 
Index: trunk/src/lib/physics/fields/point_gravity.h
===================================================================
--- trunk/src/lib/physics/fields/point_gravity.h	(revision 9406)
+++ trunk/src/lib/physics/fields/point_gravity.h	(revision 9869)
@@ -1,3 +1,3 @@
-/*! 
+/*!
  * @file point_gravity.h
   *  Definition of ...
@@ -16,4 +16,5 @@
 //! A class for ...
 class PointGravity : public Field {
+  ObjectListDeclaration(PointGravity);
 
  public:
Index: trunk/src/lib/physics/fields/twirl.cc
===================================================================
--- trunk/src/lib/physics/fields/twirl.cc	(revision 9406)
+++ trunk/src/lib/physics/fields/twirl.cc	(revision 9869)
@@ -20,4 +20,7 @@
 
 
+#include "class_id_DEPRECATED.h"
+ObjectListDefinitionID(Twirl, CL_FIELD_TWIRL);
+
 
 /**
@@ -27,5 +30,5 @@
 Twirl::Twirl ()
 {
-   this->setClassID(CL_FIELD_TWIRL, "Twirl");
+  this->registerObject(this, Twirl::_objectList);
 }
 
Index: trunk/src/lib/physics/fields/twirl.h
===================================================================
--- trunk/src/lib/physics/fields/twirl.h	(revision 9406)
+++ trunk/src/lib/physics/fields/twirl.h	(revision 9869)
@@ -1,3 +1,3 @@
-/*! 
+/*!
  * @file twirl.h
   *  Definition of ...
@@ -16,4 +16,5 @@
 //! A class for ...
 class Twirl : public Field {
+  ObjectListDeclaration(Twirl);
 
  public:
Index: trunk/src/lib/physics/physics_connection.cc
===================================================================
--- trunk/src/lib/physics/physics_connection.cc	(revision 9406)
+++ trunk/src/lib/physics/physics_connection.cc	(revision 9869)
@@ -19,7 +19,8 @@
 
 #include "physics_engine.h"
+#include "debug.h"
 
-#include "field.h"
-#include "particle_system.h"
+#include "fields/field.h"
+#include "particles/particle_system.h"
 #include "physics_interface.h"
 
@@ -27,8 +28,7 @@
 #include "util/loading/load_param.h"
 
-
-
-CREATE_FACTORY(PhysicsConnection, CL_PHYSICS_CONNECTION);
-
+#include "class_id_DEPRECATED.h"
+ObjectListDefinition(PhysicsConnection);
+CREATE_FACTORY(PhysicsConnection);
 /**
  *  creates a PhysicsConnection
@@ -36,5 +36,5 @@
 PhysicsConnection::PhysicsConnection(PhysicsInterface* subject, Field* field)
 {
-  this->setClassID(CL_PHYSICS_CONNECTION, "PhysicsConnection");
+  this->registerObject(this, PhysicsConnection::_objectList);
   this->type = PCON_PhysIField;
 
@@ -47,5 +47,5 @@
 PhysicsConnection::PhysicsConnection(const TiXmlElement* root)
 {
-  this->setClassID(CL_PHYSICS_CONNECTION, "PhysicsConnection");
+  this->registerObject(this, PhysicsConnection::_objectList);
   this->type = PCON_PhysIField;
 
Index: trunk/src/lib/physics/physics_connection.h
===================================================================
--- trunk/src/lib/physics/physics_connection.h	(revision 9406)
+++ trunk/src/lib/physics/physics_connection.h	(revision 9869)
@@ -27,5 +27,5 @@
 class PhysicsConnection : public BaseObject
 {
-
+  ObjectListDeclaration(PhysicsConnection);
  public:
   PhysicsConnection(PhysicsInterface* subject, Field* field);
Index: trunk/src/lib/physics/physics_engine.cc
===================================================================
--- trunk/src/lib/physics/physics_engine.cc	(revision 9406)
+++ trunk/src/lib/physics/physics_engine.cc	(revision 9869)
@@ -18,18 +18,16 @@
 #include "physics_engine.h"
 
-#include "class_list.h"
-#include "parser/tinyxml/tinyxml.h"
 #include "util/loading/factory.h"
-#include "util/loading/load_param.h"
-
-
-
-
-/**
- *  standard constructor
-*/
+#include "util/loading/load_param_xml.h"
+
+
+
+ObjectListDefinition(PhysicsEngine);
+/**
+ * @brief standard constructor
+ */
 PhysicsEngine::PhysicsEngine()
 {
-  this->setClassID(CL_PHYSICS_ENGINE, "PhysicsEngine");
+  this->registerObject(this, PhysicsEngine::_objectList);
   this->setName("PhysicsEngine");
   this->interfaces = NULL;
@@ -130,6 +128,5 @@
 PhysicsInterface* PhysicsEngine::getPhysicsInterfaceByName(const std::string& physicsInterfaceName) const
 {
-  BaseObject* interface = ClassList::getObject(physicsInterfaceName, CL_PHYSICS_INTERFACE);
-  return (interface != NULL)?  dynamic_cast<PhysicsInterface*>(interface) : NULL;
+  return PhysicsInterface::objectList().getObject(physicsInterfaceName);
 }
 
@@ -223,10 +220,10 @@
 
   /* actually tick all the PhysicsInterfaces. Move the objects around */
-  if (this->interfaces != NULL || (this->interfaces = ClassList::getList(CL_PHYSICS_INTERFACE)) != NULL)
-  {
-    std::list<BaseObject*>::const_iterator tickPhys;
-    for (tickPhys = this->interfaces->begin(); tickPhys != this->interfaces->end(); tickPhys++)
-      dynamic_cast<PhysicsInterface*>(*tickPhys)->tickPhys(dt);
-  }
+
+  ObjectList<PhysicsInterface>::const_iterator it;
+  for (it = PhysicsInterface::objectList().begin();
+       it != PhysicsInterface::objectList().end();
+       ++it)
+      (*it)->tickPhys(dt);
 }
 
Index: trunk/src/lib/physics/physics_engine.h
===================================================================
--- trunk/src/lib/physics/physics_engine.h	(revision 9406)
+++ trunk/src/lib/physics/physics_engine.h	(revision 9869)
@@ -12,5 +12,5 @@
 #include "physics_connection.h"
 #include "physics_interface.h"
-#include "field.h"
+#include "fields/field.h"
 #include <list>
 
@@ -20,7 +20,8 @@
 
 //! A class, that brings things into motion through Physics.
-class PhysicsEngine : public BaseObject {
-
- public:
+class PhysicsEngine : public BaseObject
+{
+  ObjectListDeclaration(PhysicsEngine);
+public:
   virtual ~PhysicsEngine();
   /** @returns a Pointer to the only object of this Class */
@@ -46,8 +47,8 @@
   void                   debug() const;
 
- private:
+private:
   PhysicsEngine();
 
- private:
+private:
   static PhysicsEngine*         singletonRef;         //!< the singleton reference of the PhysicsEngine
 
Index: trunk/src/lib/physics/physics_interface.cc
===================================================================
--- trunk/src/lib/physics/physics_interface.cc	(revision 9406)
+++ trunk/src/lib/physics/physics_interface.cc	(revision 9869)
@@ -23,5 +23,5 @@
 #include "physics_engine.h"
 
-#include "field.h"
+#include "fields/field.h"
 #include "p_node.h"
 
@@ -31,11 +31,11 @@
 
 
-
+ObjectListDefinition(PhysicsInterface);
 /**
- *  standard constructor
+ * @brief standard constructor
  */
 PhysicsInterface::PhysicsInterface ()
 {
-  this->setClassID(CL_PHYSICS_INTERFACE, "PhysicsInterface");
+  this->registerObject(this, PhysicsInterface::_objectList);
 
   this->mass = 1;
Index: trunk/src/lib/physics/physics_interface.h
===================================================================
--- trunk/src/lib/physics/physics_interface.h	(revision 9406)
+++ trunk/src/lib/physics/physics_interface.h	(revision 9869)
@@ -29,4 +29,5 @@
 class PhysicsInterface : virtual public BaseObject
 {
+  ObjectListDeclaration(PhysicsInterface);
  public:
   PhysicsInterface();
