Index: trunk/src/lib/graphics/importer/model.cc
===================================================================
--- trunk/src/lib/graphics/importer/model.cc	(revision 5216)
+++ trunk/src/lib/graphics/importer/model.cc	(revision 5217)
@@ -107,9 +107,11 @@
     delete this->firstFace;
 
+  // deleting the glList
+  if (this->listNumber != 0)
+    glDeleteLists(this->listNumber, 1);
+
   if (this->next !=NULL)
     delete this->next;
 
-  //  if (this->listNumber != 0)
-//    glDeleteLists(this->listNumber, 1);
 }
 
Index: trunk/src/lib/physics/physics_engine.cc
===================================================================
--- trunk/src/lib/physics/physics_engine.cc	(revision 5216)
+++ trunk/src/lib/physics/physics_engine.cc	(revision 5217)
@@ -18,4 +18,5 @@
 #include "physics_engine.h"
 
+#include "class_list.h"
 #include "list.h"
 #include "tinyxml.h"
@@ -34,6 +35,6 @@
   this->setName("PhysicsEngine");
   this->connections = new tList<PhysicsConnection>;
-  this->interfaces = new tList<PhysicsInterface>;
   this->fields = new tList<Field>;
+  this->interfaces = NULL;
 }
 
@@ -70,5 +71,4 @@
 //   }
 //   delete itPI;
-   delete this->interfaces;
 //
 //   // delete all PhysicsFields, still in existence (this could be dangerous)
@@ -133,26 +133,4 @@
 
 /**
- *  adds a PhysicsInterface to the list of handeled physicsInterfaces
- * @param physicsInterface the interface to add
-
-   this is normally done in the constructor of any PhysicsInterface
-*/
-void PhysicsEngine::addPhysicsInterface(PhysicsInterface* physicsInterface)
-{
-  this->interfaces->add(physicsInterface);
-}
-
-/**
- *  removes a PhysicsInterface from the list of handeled physicsInterfaces
- * @param physicsInterface the interface to remove
-
-   this is normally done in the destructor of any PhysicsInterface
-*/
-void PhysicsEngine::removePhysicsInterface(PhysicsInterface* physicsInterface)
-{
-  this->interfaces->remove(physicsInterface);
-}
-
-/**
 * @param physicsInterfaceName the Name of the PhysicsInterface to search for
   @returns the PhysicsInterface if found, or NULL if not
@@ -160,6 +138,6 @@
 PhysicsInterface* PhysicsEngine::getPhysicsInterfaceByName(const char* physicsInterfaceName) const
 {
-  tIterator<PhysicsInterface>* tmpIt = interfaces->getIterator();
-  PhysicsInterface* tmpInt = tmpIt->firstElement();
+  tIterator<BaseObject>* tmpIt = ClassList::getList(CL_PHYSICS_INTERFACE)->getIterator();
+  BaseObject* tmpInt = tmpIt->firstElement();
   while(tmpInt)
   {
@@ -167,5 +145,5 @@
     {
       delete tmpIt;
-      return tmpInt;
+      return dynamic_cast<PhysicsInterface*>(tmpInt);
     }
     tmpInt = tmpIt->nextElement();
@@ -286,13 +264,16 @@
 
   /* actually tick all the PhysicsInterfaces. Move the objects around */
-  tIterator<PhysicsInterface>* itPI = this->interfaces->getIterator();
-  PhysicsInterface* enumPI = itPI->firstElement();
-  while (enumPI)
-    {
-      enumPI->tickPhys(dt);
-
-      enumPI = itPI->nextElement();
-    }
-  delete itPI;
+  if (this->interfaces != NULL || (this->interfaces = ClassList::getList(CL_PHYSICS_INTERFACE)) != NULL)
+  {
+    tIterator<BaseObject>* itPI = this->interfaces->getIterator();
+    PhysicsInterface* enumPI = dynamic_cast<PhysicsInterface*>(itPI->firstElement());
+    while (enumPI)
+    {
+       enumPI->tickPhys(dt);
+
+      enumPI = dynamic_cast<PhysicsInterface*>(itPI->nextElement());
+    }
+   delete itPI;
+  }
 }
 
@@ -308,5 +289,6 @@
   PRINT(0)("====================================\n");
   PRINT(0)(" reference: %p\n", this);
-  PRINT(0)(" number of Interfaces: %d\n", this->interfaces->getSize());
+  if (this->interfaces != NULL)
+    PRINT(0)(" number of Interfaces: %d\n", this->interfaces->getSize());
   PRINT(0)(" number of Fields: %d\n", this->fields->getSize());
   PRINT(0)(" number of Connections: %d\n", this->connections->getSize());
Index: trunk/src/lib/physics/physics_engine.h
===================================================================
--- trunk/src/lib/physics/physics_engine.h	(revision 5216)
+++ trunk/src/lib/physics/physics_engine.h	(revision 5217)
@@ -30,6 +30,4 @@
   void loadConnections(const TiXmlElement* root);
 
-  void                   addPhysicsInterface(PhysicsInterface* physicsInterface);
-  void                   removePhysicsInterface(PhysicsInterface* physicsInterface);
   PhysicsInterface*      getPhysicsInterfaceByName(const char* physicsInterfaceName) const;
 
@@ -53,7 +51,7 @@
   static PhysicsEngine*         singletonRef;         //!< the singleton reference of the PhysicsEngine
 
-  tList<PhysicsInterface>*      interfaces;           //!< a list of physically based objects
   tList<Field>*                 fields;               //!< a list of physicsl fields.
-  tList<PhysicsConnection>*     connections;          //!< a list of physical connections
+  tList<PhysicsConnection>*     connections;          //!< a list of physical connections.
+  const tList<BaseObject>*      interfaces;           //!< The list of physical interfaces.
 };
 
Index: trunk/src/lib/physics/physics_interface.cc
===================================================================
--- trunk/src/lib/physics/physics_interface.cc	(revision 5216)
+++ trunk/src/lib/physics/physics_interface.cc	(revision 5217)
@@ -45,5 +45,5 @@
   this->bForceApplied = false;
 
-   PhysicsEngine::getInstance()->addPhysicsInterface(this);
+//   PhysicsEngine::getInstance()->addPhysicsInterface(this);
 }
 
@@ -53,5 +53,5 @@
 PhysicsInterface::~PhysicsInterface ()
 {
-   PhysicsEngine::getInstance()->removePhysicsInterface(this);
+//   PhysicsEngine::getInstance()->removePhysicsInterface(this);
 }
 
