Index: code/trunk/src/libraries/core/BaseObject.cc
===================================================================
--- code/trunk/src/libraries/core/BaseObject.cc	(revision 6503)
+++ code/trunk/src/libraries/core/BaseObject.cc	(revision 6524)
@@ -115,5 +115,6 @@
         XMLPortParam(BaseObject, "active", setActive, isActive, xmlelement, mode);
         XMLPortParam(BaseObject, "mainstate", setMainStateName, getMainStateName, xmlelement, mode);
-
+        XMLPortParamTemplate(BaseObject, "template", addTemplate, getSingleTemplate, xmlelement, mode, const std::string&);
+        
         XMLPortObjectTemplate(BaseObject, Template, "templates", addTemplate, getTemplate, xmlelement, mode, Template*);
         XMLPortObject(BaseObject, BaseObject, "eventlisteners", addEventListener, getEventListener, xmlelement, mode);
@@ -190,4 +191,16 @@
 
     /**
+        @brief Returns the name of the first Template.
+        @return The name as string.
+    */
+    const std::string& BaseObject::getSingleTemplate(void) const
+    {
+        if(this->templates_.empty())
+            return BLANKSTRING;
+
+        return (*this->templates_.begin())->getName();
+    }
+
+    /**
         @brief Returns the Template with the given index.
         @param index The index
Index: code/trunk/src/libraries/core/BaseObject.h
===================================================================
--- code/trunk/src/libraries/core/BaseObject.h	(revision 6503)
+++ code/trunk/src/libraries/core/BaseObject.h	(revision 6524)
@@ -195,4 +195,5 @@
 
             void setXMLName(const std::string& name);
+            const std::string& getSingleTemplate(void) const;
             Template* getTemplate(unsigned int index) const;
             void registerEventStates();
Index: code/trunk/src/libraries/core/GraphicsManager.cc
===================================================================
--- code/trunk/src/libraries/core/GraphicsManager.cc	(revision 6503)
+++ code/trunk/src/libraries/core/GraphicsManager.cc	(revision 6524)
@@ -318,5 +318,5 @@
         this->viewport_ = this->renderWindow_->addViewport(0, 0);
 
-        Ogre::TextureManager::getSingleton().setDefaultNumMipmaps(0);
+        Ogre::TextureManager::getSingleton().setDefaultNumMipmaps(Ogre::MIP_UNLIMITED);
 
         // add console commands
Index: code/trunk/src/libraries/core/OrxonoxClass.h
===================================================================
--- code/trunk/src/libraries/core/OrxonoxClass.h	(revision 6503)
+++ code/trunk/src/libraries/core/OrxonoxClass.h	(revision 6524)
@@ -39,4 +39,5 @@
 
 #include "CorePrereqs.h"
+#include "Super.h"
 
 #include <set>
@@ -107,4 +108,6 @@
             bool isParentOf(const OrxonoxClass* object);
             bool isDirectParentOf(const OrxonoxClass* object);
+            
+            virtual void clone(OrxonoxClass*& item) {}
 
             inline unsigned int getReferenceCount() const
@@ -169,4 +172,7 @@
             std::vector<std::pair<unsigned int, void*> > objectPointers_;
     };
+    
+    SUPER_FUNCTION(11, OrxonoxClass, clone, true);
+    
 }
 
Index: code/trunk/src/libraries/core/Super.h
===================================================================
--- code/trunk/src/libraries/core/Super.h	(revision 6503)
+++ code/trunk/src/libraries/core/Super.h	(revision 6524)
@@ -267,4 +267,17 @@
     #define SUPER_changedGametype(classname, functionname, ...) \
         SUPER_NOARGS(classname, functionname)
+        
+    #define SUPER_changedUsed(classname, functionname, ...) \
+        SUPER_NOARGS(classname, functionname)
+        
+    #define SUPER_clone(classname, functionname, ...) \
+        SUPER_ARGS(classname, functionname, __VA_ARGS__)
+        
+    #define SUPER_changedCarrier(classname, functionname, ...) \
+        SUPER_NOARGS(classname, functionname)
+        
+    #define SUPER_changedPickedUp(classname, functionname, ...) \
+        SUPER_NOARGS(classname, functionname)
+        
     // (1/3) --> HERE <-- --> HERE <-- --> HERE <-- --> HERE <-- --> HERE <-- --> HERE <-- --> HERE <--
 
@@ -517,4 +530,21 @@
             ()
         SUPER_FUNCTION_GLOBAL_DECLARATION_PART2;
+        
+        SUPER_FUNCTION_GLOBAL_DECLARATION_PART1(10, changedUsed, false)
+            ()
+        SUPER_FUNCTION_GLOBAL_DECLARATION_PART2;
+
+        SUPER_FUNCTION_GLOBAL_DECLARATION_PART1(11, clone, true, OrxonoxClass* item)
+            (item)
+        SUPER_FUNCTION_GLOBAL_DECLARATION_PART2;
+        
+        SUPER_FUNCTION_GLOBAL_DECLARATION_PART1(12, changedCarrier, false)
+            ()
+        SUPER_FUNCTION_GLOBAL_DECLARATION_PART2;
+        
+        SUPER_FUNCTION_GLOBAL_DECLARATION_PART1(13, changedPickedUp, false)
+            ()
+        SUPER_FUNCTION_GLOBAL_DECLARATION_PART2;
+
         // (2/3) --> HERE <-- --> HERE <-- --> HERE <-- --> HERE <-- --> HERE <-- --> HERE <-- --> HERE <--
 
@@ -570,4 +600,8 @@
     SUPER_INTRUSIVE_DECLARATION(changedName);
     SUPER_INTRUSIVE_DECLARATION(changedGametype);
+    SUPER_INTRUSIVE_DECLARATION(changedUsed);
+    SUPER_INTRUSIVE_DECLARATION(clone);
+    SUPER_INTRUSIVE_DECLARATION(changedCarrier);
+    SUPER_INTRUSIVE_DECLARATION(changedPickedUp);
     // (3/3) --> HERE <-- --> HERE <-- --> HERE <-- --> HERE <-- --> HERE <-- --> HERE <-- --> HERE <--
 
