Index: code/trunk/src/orxonox/interfaces/GametypeMessageListener.h
===================================================================
--- code/trunk/src/orxonox/interfaces/GametypeMessageListener.h	(revision 9526)
+++ code/trunk/src/orxonox/interfaces/GametypeMessageListener.h	(revision 9667)
@@ -31,9 +31,9 @@
 
 #include "OrxonoxPrereqs.h"
-#include "core/OrxonoxClass.h"
+#include "core/class/OrxonoxInterface.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport GametypeMessageListener : virtual public OrxonoxClass
+    class _OrxonoxExport GametypeMessageListener : virtual public OrxonoxInterface
     {
         public:
Index: code/trunk/src/orxonox/interfaces/InterfaceCompilation.cc
===================================================================
--- code/trunk/src/orxonox/interfaces/InterfaceCompilation.cc	(revision 9526)
+++ code/trunk/src/orxonox/interfaces/InterfaceCompilation.cc	(revision 9667)
@@ -50,7 +50,9 @@
     // GametypeMessageListener
     //----------------------------
+    RegisterAbstractClass(GametypeMessageListener).inheritsFrom(Class(OrxonoxInterface));
+
     GametypeMessageListener::GametypeMessageListener()
     {
-        RegisterRootObject(GametypeMessageListener);
+        RegisterObject(GametypeMessageListener);
     }
 
@@ -58,7 +60,9 @@
     // PlayerTrigger
     //----------------------------
+    RegisterAbstractClass(PlayerTrigger).inheritsFrom(Class(OrxonoxInterface));
+
     PlayerTrigger::PlayerTrigger()
     {
-        RegisterRootObject(PlayerTrigger);
+        RegisterObject(PlayerTrigger);
 
         this->isForPlayer_ = false;
@@ -76,7 +80,9 @@
     // RadarListener
     //----------------------------
+    RegisterAbstractClass(RadarListener).inheritsFrom(Class(OrxonoxInterface));
+
     RadarListener::RadarListener()
     {
-        RegisterRootObject(RadarListener);
+        RegisterObject(RadarListener);
     }
 
@@ -84,7 +90,9 @@
     // TeamColourable
     //----------------------------
+    RegisterAbstractClass(TeamColourable).inheritsFrom(Class(OrxonoxInterface));
+
     TeamColourable::TeamColourable()
     {
-        RegisterRootObject(TeamColourable);
+        RegisterObject(TeamColourable);
     }
 
@@ -92,7 +100,9 @@
     // Rewardable
     //----------------------------
+    RegisterAbstractClass(Rewardable).inheritsFrom(Class(OrxonoxInterface));
+
     Rewardable::Rewardable()
     {
-        RegisterRootObject(Rewardable);
+        RegisterObject(Rewardable);
     }
 }
Index: code/trunk/src/orxonox/interfaces/NotificationListener.cc
===================================================================
--- code/trunk/src/orxonox/interfaces/NotificationListener.cc	(revision 9526)
+++ code/trunk/src/orxonox/interfaces/NotificationListener.cc	(revision 9667)
@@ -53,5 +53,5 @@
     NotificationListener::NotificationListener()
     {
-        RegisterRootObject(NotificationListener);
+        RegisterObject(NotificationListener);
     }
 
Index: code/trunk/src/orxonox/interfaces/NotificationListener.h
===================================================================
--- code/trunk/src/orxonox/interfaces/NotificationListener.h	(revision 9526)
+++ code/trunk/src/orxonox/interfaces/NotificationListener.h	(revision 9667)
@@ -44,5 +44,5 @@
 #include "util/StringUtils.h"
 
-#include "core/OrxonoxClass.h"
+#include "core/class/OrxonoxInterface.h"
 
 namespace orxonox
@@ -90,5 +90,5 @@
     @todo Consistent terminology between message, notification and command.
     */
-    class _OrxonoxExport NotificationListener : virtual public OrxonoxClass
+    class _OrxonoxExport NotificationListener : virtual public OrxonoxInterface
     {
         public:
Index: code/trunk/src/orxonox/interfaces/PickupCarrier.cc
===================================================================
--- code/trunk/src/orxonox/interfaces/PickupCarrier.cc	(revision 9526)
+++ code/trunk/src/orxonox/interfaces/PickupCarrier.cc	(revision 9667)
@@ -35,9 +35,11 @@
 
 #include "core/CoreIncludes.h"
-#include "core/Identifier.h"
+#include "core/class/Identifier.h"
 
 #include "Pickupable.h"
 
-namespace orxonox {
+namespace orxonox
+{
+    RegisterAbstractClass(PickupCarrier).inheritsFrom(Class(OrxonoxInterface));
 
     /**
@@ -47,5 +49,5 @@
     PickupCarrier::PickupCarrier()
     {
-        RegisterRootObject(PickupCarrier);
+        RegisterObject(PickupCarrier);
     }
 
Index: code/trunk/src/orxonox/interfaces/PickupCarrier.h
===================================================================
--- code/trunk/src/orxonox/interfaces/PickupCarrier.h	(revision 9526)
+++ code/trunk/src/orxonox/interfaces/PickupCarrier.h	(revision 9667)
@@ -41,5 +41,5 @@
 #include <vector>
 
-#include "core/OrxonoxClass.h"
+#include "core/class/OrxonoxInterface.h"
 
 namespace orxonox
@@ -66,5 +66,5 @@
     @ingroup Pickup
     */
-    class _OrxonoxExport PickupCarrier : virtual public OrxonoxClass
+    class _OrxonoxExport PickupCarrier : virtual public OrxonoxInterface
     {
         // So that the different Pickupables have full access to their PickupCarrier.
Index: code/trunk/src/orxonox/interfaces/PickupListener.cc
===================================================================
--- code/trunk/src/orxonox/interfaces/PickupListener.cc	(revision 9526)
+++ code/trunk/src/orxonox/interfaces/PickupListener.cc	(revision 9667)
@@ -47,5 +47,5 @@
     PickupListener::PickupListener()
     {
-        RegisterRootObject(PickupListener);
+        RegisterObject(PickupListener);
     }
 
Index: code/trunk/src/orxonox/interfaces/PickupListener.h
===================================================================
--- code/trunk/src/orxonox/interfaces/PickupListener.h	(revision 9526)
+++ code/trunk/src/orxonox/interfaces/PickupListener.h	(revision 9667)
@@ -39,5 +39,5 @@
 #include "Pickupable.h"
 
-#include "core/OrxonoxClass.h"
+#include "core/class/OrxonoxInterface.h"
 
 namespace orxonox
@@ -55,5 +55,5 @@
     @ingroup Pickup
     */
-    class _OrxonoxExport PickupListener : virtual public OrxonoxClass
+    class _OrxonoxExport PickupListener : virtual public OrxonoxInterface
     {
         public:
Index: code/trunk/src/orxonox/interfaces/Pickupable.cc
===================================================================
--- code/trunk/src/orxonox/interfaces/Pickupable.cc	(revision 9526)
+++ code/trunk/src/orxonox/interfaces/Pickupable.cc	(revision 9667)
@@ -34,5 +34,5 @@
 #include "Pickupable.h"
 
-#include "core/Identifier.h"
+#include "core/class/Identifier.h"
 #include "core/CoreIncludes.h"
 #include "util/Convert.h"
@@ -46,4 +46,5 @@
 namespace orxonox
 {
+    RegisterAbstractClass(Pickupable).inheritsFrom(Class(OrxonoxInterface)).inheritsFrom(Class(Rewardable));
 
     /**
@@ -53,5 +54,5 @@
     Pickupable::Pickupable() : used_(false), pickedUp_(false)
     {
-        RegisterRootObject(Pickupable);
+        RegisterObject(Pickupable);
 
         this->carrier_ = NULL;
@@ -71,5 +72,5 @@
     /**
     @brief
-        A method that is called by OrxonoxClass::destroy() before the object is actually destroyed.
+        A method that is called by Destroyable::destroy() before the object is actually destroyed.
     */
     void Pickupable::preDestroy(void)
@@ -98,5 +99,5 @@
     {
         if(!this->isBeingDestroyed())
-            this->OrxonoxClass::destroy();
+            this->Destroyable::destroy();
         else
             orxout(internal_warning, context::pickups) << this->getIdentifier()->getName() << " may be unsafe. " << endl;
Index: code/trunk/src/orxonox/interfaces/Pickupable.h
===================================================================
--- code/trunk/src/orxonox/interfaces/Pickupable.h	(revision 9526)
+++ code/trunk/src/orxonox/interfaces/Pickupable.h	(revision 9667)
@@ -39,7 +39,7 @@
 
 #include <list>
-#include "core/Super.h"
+#include "core/class/Super.h"
 
-#include "core/OrxonoxClass.h"
+#include "core/class/OrxonoxInterface.h"
 #include "Rewardable.h"
 
@@ -58,5 +58,5 @@
     @ingroup Pickup
     */
-    class _OrxonoxExport Pickupable : virtual public OrxonoxClass, public Rewardable
+    class _OrxonoxExport Pickupable : virtual public OrxonoxInterface, public Rewardable
     {
         friend class PickupCarrier;
@@ -144,5 +144,5 @@
 
         protected:
-            virtual void preDestroy(void); //!< A method that is called by OrxonoxClass::destroy() before the object is actually destroyed.
+            virtual void preDestroy(void); //!< A method that is called by Destroyable::destroy() before the object is actually destroyed.
             virtual void destroyPickup(void); //!< Destroys a Pickupable.
             virtual void carrierDestroyed(void); //!< Is called by the PickupCarrier when it is being destroyed.
Index: code/trunk/src/orxonox/interfaces/PlayerTrigger.h
===================================================================
--- code/trunk/src/orxonox/interfaces/PlayerTrigger.h	(revision 9526)
+++ code/trunk/src/orxonox/interfaces/PlayerTrigger.h	(revision 9667)
@@ -38,6 +38,6 @@
 #include "OrxonoxPrereqs.h"
 
-#include "core/OrxonoxClass.h"
-#include "core/WeakPtr.h"
+#include "core/class/OrxonoxInterface.h"
+#include "core/object/WeakPtr.h"
 
 namespace orxonox
@@ -52,5 +52,5 @@
     @ingroup Triggers
     */
-    class _OrxonoxExport PlayerTrigger : virtual public OrxonoxClass
+    class _OrxonoxExport PlayerTrigger : virtual public OrxonoxInterface
     {
     public:
Index: code/trunk/src/orxonox/interfaces/RadarListener.h
===================================================================
--- code/trunk/src/orxonox/interfaces/RadarListener.h	(revision 9526)
+++ code/trunk/src/orxonox/interfaces/RadarListener.h	(revision 9667)
@@ -31,9 +31,9 @@
 
 #include "OrxonoxPrereqs.h"
-#include "core/OrxonoxClass.h"
+#include "core/class/OrxonoxInterface.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport RadarListener : virtual public OrxonoxClass
+    class _OrxonoxExport RadarListener : virtual public OrxonoxInterface
     {
     public:
Index: code/trunk/src/orxonox/interfaces/RadarViewable.cc
===================================================================
--- code/trunk/src/orxonox/interfaces/RadarViewable.cc	(revision 9526)
+++ code/trunk/src/orxonox/interfaces/RadarViewable.cc	(revision 9667)
@@ -38,4 +38,6 @@
 namespace orxonox
 {
+    RegisterAbstractClass(RadarViewable).inheritsFrom(Class(OrxonoxInterface));
+
     /**
         @brief Constructor.
@@ -45,5 +47,4 @@
         , bVisibility_(true)
         , bInitialized_(false)
-        , creator_(creator)
         , wePtr_(wePtr)
         , radarObjectCamouflage_(0.0f)
@@ -52,10 +53,10 @@
         , scale_(1.0f)
     {
-        RegisterRootObject(RadarViewable);
+        RegisterObject(RadarViewable);
 
         this->uniqueId_=getUniqueNumberString();
         if( GameMode::showsGraphics() )
         {
-            this->radar_ = this->creator_->getScene()->getRadar();
+            this->radar_ = creator->getScene()->getRadar();
             this->radar_->addRadarObject(this);
         }
Index: code/trunk/src/orxonox/interfaces/RadarViewable.h
===================================================================
--- code/trunk/src/orxonox/interfaces/RadarViewable.h	(revision 9526)
+++ code/trunk/src/orxonox/interfaces/RadarViewable.h	(revision 9667)
@@ -36,6 +36,6 @@
 
 #include "util/Math.h"
-#include "core/OrxonoxClass.h"
-#include "core/SmartPtr.h"
+#include "core/class/OrxonoxInterface.h"
+#include "core/object/SmartPtr.h"
 
 namespace orxonox
@@ -46,5 +46,5 @@
     @brief Interface for receiving window events.
     */
-    class _OrxonoxExport RadarViewable : virtual public OrxonoxClass
+    class _OrxonoxExport RadarViewable : virtual public OrxonoxInterface
     {
     public:
@@ -153,5 +153,4 @@
         //Map
         std::string uniqueId_;
-        BaseObject* creator_;
 
 
Index: code/trunk/src/orxonox/interfaces/Rewardable.h
===================================================================
--- code/trunk/src/orxonox/interfaces/Rewardable.h	(revision 9526)
+++ code/trunk/src/orxonox/interfaces/Rewardable.h	(revision 9667)
@@ -36,5 +36,5 @@
 
 #include "OrxonoxPrereqs.h"
-#include "core/OrxonoxClass.h"
+#include "core/class/OrxonoxInterface.h"
 
 namespace orxonox
@@ -48,5 +48,5 @@
         Damian 'Mozork' Frick
     */
-    class _OrxonoxExport Rewardable : virtual public OrxonoxClass
+    class _OrxonoxExport Rewardable : virtual public OrxonoxInterface
     {
         public:
Index: code/trunk/src/orxonox/interfaces/TeamColourable.h
===================================================================
--- code/trunk/src/orxonox/interfaces/TeamColourable.h	(revision 9526)
+++ code/trunk/src/orxonox/interfaces/TeamColourable.h	(revision 9667)
@@ -33,9 +33,9 @@
 
 #include "util/UtilPrereqs.h"
-#include "core/OrxonoxClass.h"
+#include "core/class/OrxonoxInterface.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport TeamColourable : virtual public OrxonoxClass
+    class _OrxonoxExport TeamColourable : virtual public OrxonoxInterface
     {
         public:
