Index: code/branches/core6/src/libraries/core/BaseObject.cc
===================================================================
--- code/branches/core6/src/libraries/core/BaseObject.cc	(revision 9658)
+++ code/branches/core6/src/libraries/core/BaseObject.cc	(revision 9659)
@@ -57,5 +57,5 @@
     BaseObject::BaseObject(Context* context) : bInitialized_(false)
     {
-        RegisterRootObject(BaseObject);
+        RegisterObject(BaseObject);
 
         this->bInitialized_ = true;
Index: code/branches/core6/src/libraries/core/Core.cc
===================================================================
--- code/branches/core6/src/libraries/core/Core.cc	(revision 9658)
+++ code/branches/core6/src/libraries/core/Core.cc	(revision 9659)
@@ -179,5 +179,5 @@
         // Do this soon after the ConfigFileManager has been created to open up the
         // possibility to configure everything below here
-        RegisterRootObject(Core);
+        RegisterObject(Core);
         orxout(internal_info) << "configuring Core" << endl;
         this->setConfigValues();
@@ -516,5 +516,5 @@
     DevModeListener::DevModeListener()
     {
-        RegisterRootObject(DevModeListener);
+        RegisterObject(DevModeListener);
     }
 }
Index: code/branches/core6/src/libraries/core/CoreIncludes.h
===================================================================
--- code/branches/core6/src/libraries/core/CoreIncludes.h	(revision 9658)
+++ code/branches/core6/src/libraries/core/CoreIncludes.h	(revision 9659)
@@ -37,10 +37,13 @@
     @brief Defines several very important macros used to register objects, register classes, and to work with identifiers.
 
-    Every class needs the @c RegisterObject(class) macro in its constructor. If the class is an interface
-    or the @c BaseObject itself, it needs the macro @c RegisterRootObject(class) instead.
+    Every class needs the @c RegisterObject(class) macro in its constructor.
 
     To register @a class in the class-hierarchy, use the @c RegisterClass(class) macro outside of the class implementation,
     so it gets executed statically before @c main(). If you don't want @a class to be loadable, but still register it, call
     @c RegisterUnloadableClass(class).
+
+    Abstract classes are registered with @c RegisterAbstractClass(class). For abstract classes, the inheritance must be
+    defined manually with @c RegisterAbstractClass(class).inheritsFrom(Class(parent)). Multiple parent classes can be defined
+    by chaining the above command.
 
     Example:
@@ -125,30 +128,12 @@
 
 /**
-    @brief Intern macro, containing the common parts of @c RegisterObject and @c RegisterRootObject.
-    @param ClassName The name of the class
-    @param bRootClass True if the class is directly derived from orxonox::OrxonoxClass
-*/
-#define InternRegisterObject(ClassName) \
+    @brief Registers a newly created object in the framework. Has to be called at the beginning of the constructor of @a ClassName.
+    @param ClassName The name of the class
+*/
+#define RegisterObject(ClassName) \
     if (ClassIdentifier<ClassName>::getIdentifier(#ClassName)->initializeObject(this)) \
         return; \
     else \
         ((void)0)
-
-/**
-    @brief Registers a newly created object in the framework. Has to be called at the beginning of the constructor of @a ClassName.
-    @param ClassName The name of the class
-*/
-#define RegisterObject(ClassName) \
-    InternRegisterObject(ClassName)
-
-/**
-    @brief Registers a newly created object in the framework. Has to be called at the beginning of the constructor of @a ClassName.
-    @param ClassName The name of the class
-
-    In contrast to RegisterObject, this is used for classes that inherit directly from
-    orxonox::OrxonoxClass, namely all interfaces and orxonox::BaseObject.
-*/
-#define RegisterRootObject(ClassName) \
-    InternRegisterObject(ClassName)
 
 /**
Index: code/branches/core6/src/libraries/core/GUIManager.cc
===================================================================
--- code/branches/core6/src/libraries/core/GUIManager.cc	(revision 9658)
+++ code/branches/core6/src/libraries/core/GUIManager.cc	(revision 9659)
@@ -256,5 +256,5 @@
         , destructionHelper_(this)
     {
-        RegisterRootObject(GUIManager);
+        RegisterObject(GUIManager);
 
         orxout(internal_status) << "initializing GUIManager..." << endl;
Index: code/branches/core6/src/libraries/core/Game.cc
===================================================================
--- code/branches/core6/src/libraries/core/Game.cc	(revision 9658)
+++ code/branches/core6/src/libraries/core/Game.cc	(revision 9659)
@@ -112,5 +112,5 @@
 
         // Do this after the Core creation!
-        RegisterRootObject(Game);
+        RegisterObject(Game);
         this->setConfigValues();
 
Index: code/branches/core6/src/libraries/core/ViewportEventListener.cc
===================================================================
--- code/branches/core6/src/libraries/core/ViewportEventListener.cc	(revision 9658)
+++ code/branches/core6/src/libraries/core/ViewportEventListener.cc	(revision 9659)
@@ -36,5 +36,5 @@
     ViewportEventListener::ViewportEventListener()
     {
-        RegisterRootObject(ViewportEventListener);
+        RegisterObject(ViewportEventListener);
     }
 }
Index: code/branches/core6/src/libraries/core/WindowEventListener.cc
===================================================================
--- code/branches/core6/src/libraries/core/WindowEventListener.cc	(revision 9658)
+++ code/branches/core6/src/libraries/core/WindowEventListener.cc	(revision 9659)
@@ -39,5 +39,5 @@
     WindowEventListener::WindowEventListener()
     {
-        RegisterRootObject(WindowEventListener);
+        RegisterObject(WindowEventListener);
     }
 
Index: code/branches/core6/src/libraries/core/XMLNameListener.cc
===================================================================
--- code/branches/core6/src/libraries/core/XMLNameListener.cc	(revision 9658)
+++ code/branches/core6/src/libraries/core/XMLNameListener.cc	(revision 9659)
@@ -36,5 +36,5 @@
     XMLNameListener::XMLNameListener()
     {
-        RegisterRootObject(XMLNameListener);
+        RegisterObject(XMLNameListener);
     }
 }
Index: code/branches/core6/src/libraries/core/command/Shell.cc
===================================================================
--- code/branches/core6/src/libraries/core/command/Shell.cc	(revision 9658)
+++ code/branches/core6/src/libraries/core/command/Shell.cc	(revision 9659)
@@ -68,5 +68,5 @@
         , bScrollable_(bScrollable)
     {
-        RegisterRootObject(Shell);
+        RegisterObject(Shell);
 
         OutputManager::getInstance().registerListener(this);
Index: code/branches/core6/src/libraries/core/input/InputBuffer.cc
===================================================================
--- code/branches/core6/src/libraries/core/input/InputBuffer.cc	(revision 9658)
+++ code/branches/core6/src/libraries/core/input/InputBuffer.cc	(revision 9659)
@@ -39,5 +39,5 @@
     InputBuffer::InputBuffer()
     {
-        RegisterRootObject(InputBuffer);
+        RegisterObject(InputBuffer);
 
         this->cursor_ = 0;
@@ -59,5 +59,5 @@
     InputBuffer::InputBuffer(const std::string& allowedChars)
     {
-        RegisterRootObject(InputBuffer);
+        RegisterObject(InputBuffer);
 
         this->maxLength_ = 1024;
Index: code/branches/core6/src/libraries/core/input/InputManager.cc
===================================================================
--- code/branches/core6/src/libraries/core/input/InputManager.cc	(revision 9658)
+++ code/branches/core6/src/libraries/core/input/InputManager.cc	(revision 9659)
@@ -98,5 +98,5 @@
         , calibratorCallbackHandler_(0)
     {
-        RegisterRootObject(InputManager);
+        RegisterObject(InputManager);
 
         orxout(internal_status, context::input) << "InputManager: Constructing..." << endl;
Index: code/branches/core6/src/libraries/core/input/JoyStick.cc
===================================================================
--- code/branches/core6/src/libraries/core/input/JoyStick.cc	(revision 9658)
+++ code/branches/core6/src/libraries/core/input/JoyStick.cc	(revision 9659)
@@ -51,5 +51,5 @@
         : super(id, oisInputManager)
     {
-        RegisterRootObject(JoyStick);
+        RegisterObject(JoyStick);
         this->setConfigValues();
         // Initialise POV and Slider states
Index: code/branches/core6/src/libraries/core/input/KeyBinder.cc
===================================================================
--- code/branches/core6/src/libraries/core/input/KeyBinder.cc	(revision 9658)
+++ code/branches/core6/src/libraries/core/input/KeyBinder.cc	(revision 9659)
@@ -58,5 +58,5 @@
         mousePosition_[1] = 0.0;
 
-        RegisterRootObject(KeyBinder);
+        RegisterObject(KeyBinder);
 
         // initialise all buttons and half axes to avoid creating everything with 'new'
Index: code/branches/core6/src/libraries/core/input/Mouse.cc
===================================================================
--- code/branches/core6/src/libraries/core/input/Mouse.cc	(revision 9658)
+++ code/branches/core6/src/libraries/core/input/Mouse.cc	(revision 9659)
@@ -54,5 +54,5 @@
         : super(id, oisInputManager)
     {
-        RegisterRootObject(Mouse);
+        RegisterObject(Mouse);
         this->windowResized(this->getWindowWidth(), this->getWindowHeight());
 
Index: code/branches/core6/src/libraries/network/ClientConnectionListener.cc
===================================================================
--- code/branches/core6/src/libraries/network/ClientConnectionListener.cc	(revision 9658)
+++ code/branches/core6/src/libraries/network/ClientConnectionListener.cc	(revision 9659)
@@ -39,5 +39,5 @@
     ClientConnectionListener::ClientConnectionListener()
     {
-        RegisterRootObject(ClientConnectionListener);
+        RegisterObject(ClientConnectionListener);
     }
 
Index: code/branches/core6/src/libraries/network/Host.cc
===================================================================
--- code/branches/core6/src/libraries/network/Host.cc	(revision 9658)
+++ code/branches/core6/src/libraries/network/Host.cc	(revision 9659)
@@ -145,5 +145,5 @@
   NetworkChatListener::NetworkChatListener()
   {
-      RegisterRootObject(NetworkChatListener);
+      RegisterObject(NetworkChatListener);
   }
 
Index: code/branches/core6/src/libraries/network/NetworkFunction.cc
===================================================================
--- code/branches/core6/src/libraries/network/NetworkFunction.cc	(revision 9658)
+++ code/branches/core6/src/libraries/network/NetworkFunction.cc	(revision 9659)
@@ -44,5 +44,5 @@
   NetworkFunctionBase::NetworkFunctionBase(const std::string& name)
   {
-    RegisterRootObject(NetworkFunctionBase);
+      RegisterObject(NetworkFunctionBase);
 
     static uint32_t networkID = 0;
Index: code/branches/core6/src/libraries/network/synchronisable/Synchronisable.cc
===================================================================
--- code/branches/core6/src/libraries/network/synchronisable/Synchronisable.cc	(revision 9658)
+++ code/branches/core6/src/libraries/network/synchronisable/Synchronisable.cc	(revision 9659)
@@ -53,5 +53,5 @@
   Synchronisable::Synchronisable(Context* context)
   {
-    RegisterRootObject(Synchronisable);
+      RegisterObject(Synchronisable);
     static uint32_t idCounter=0;
     objectMode_=0x1; // by default do not send data to server
Index: code/branches/core6/src/libraries/tools/Timer.cc
===================================================================
--- code/branches/core6/src/libraries/tools/Timer.cc	(revision 9658)
+++ code/branches/core6/src/libraries/tools/Timer.cc	(revision 9659)
@@ -140,5 +140,5 @@
     {
         this->init();
-        RegisterRootObject(Timer);
+        RegisterObject(Timer);
     }
 
@@ -153,5 +153,5 @@
     {
         this->init();
-        RegisterRootObject(Timer);
+        RegisterObject(Timer);
 
         this->setTimer(interval, bLoop, executor, bKillAfterCall);
Index: code/branches/core6/src/libraries/tools/interfaces/ToolsInterfaceCompilation.cc
===================================================================
--- code/branches/core6/src/libraries/tools/interfaces/ToolsInterfaceCompilation.cc	(revision 9658)
+++ code/branches/core6/src/libraries/tools/interfaces/ToolsInterfaceCompilation.cc	(revision 9659)
@@ -50,5 +50,5 @@
     TimeFactorListener::TimeFactorListener()
     {
-        RegisterRootObject(TimeFactorListener);
+        RegisterObject(TimeFactorListener);
     }
 
@@ -74,5 +74,5 @@
     Tickable::Tickable()
     {
-        RegisterRootObject(Tickable);
+        RegisterObject(Tickable);
     }
 }
