Index: /code/branches/FICN/src/orxonox/CMakeLists.txt
===================================================================
--- /code/branches/FICN/src/orxonox/CMakeLists.txt	(revision 747)
+++ /code/branches/FICN/src/orxonox/CMakeLists.txt	(revision 748)
@@ -5,4 +5,5 @@
 IF(NOT WIN32)
   ADD_SUBDIRECTORY(objects)
+  ADD_SUBDIRECTORY(tools)
 ENDIF(NOT WIN32)
 ADD_SUBDIRECTORY(particle)
@@ -17,4 +18,6 @@
 
 IF(WIN32)
+  INCLUDE_DIRECTORIES(tools)
+
   SET( OBJECTS_SRC_FILES
     objects/WorldEntity.cc
@@ -28,9 +31,6 @@
     objects/Fighter.cc
     objects/Model.cc
-    objects/Mesh.cc
-    objects/Light.cc
     objects/SpaceShip.cc
     objects/NPC.cc
-    objects/BillboardSet.cc
     objects/Projectile.cc
     objects/weapon_system/AmmunitionDump.cc
@@ -41,7 +41,11 @@
     objects/weapon_system/WeaponStation.cc
     objects/Explosion.cc
+    tools/BillboardSet.cc
+    tools/Light.cc
+    tools/Mesh.cc
   )
 ELSE(WIN32)
   SET(LINK_OBJECTS_LIBRARY objects)
+  SET(LINK_OBJECTS_LIBRARY tools)
 ENDIF(WIN32)
 
Index: /code/branches/FICN/src/orxonox/Orxonox.cc
===================================================================
--- /code/branches/FICN/src/orxonox/Orxonox.cc	(revision 747)
+++ /code/branches/FICN/src/orxonox/Orxonox.cc	(revision 748)
@@ -64,5 +64,5 @@
 // objects
 #include "objects/Tickable.h"
-#include "objects/Timer.h"
+#include "tools/Timer.h"
 #include "objects/NPC.h"
 #include "core/ArgReader.h"
Index: de/branches/FICN/src/orxonox/objects/BillboardSet.cc
===================================================================
--- /code/branches/FICN/src/orxonox/objects/BillboardSet.cc	(revision 747)
+++ 	(revision )
@@ -1,60 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-#include <sstream>
-
-#include <OgreSceneManager.h>
-
-#include "../Orxonox.h"
-#include "util/Math.h"
-
-#include "BillboardSet.h"
-
-namespace orxonox
-{
-    unsigned int BillboardSet::billboardSetCounter_s = 0;
-
-    BillboardSet::BillboardSet()
-    {
-        this->billboardSet_ = 0;
-    }
-
-    void BillboardSet::setBillboardSet(const std::string& file, const ColourValue& colour, int count, const Vector3& position)
-    {
-        std::ostringstream name;
-        name << (BillboardSet::billboardSetCounter_s++);
-        this->billboardSet_ = Orxonox::getSingleton()->getSceneManager()->createBillboardSet("Billboard" + name.str(), count);
-        this->billboardSet_->createBillboard(position, colour);
-        this->billboardSet_->setMaterialName(file);
-    }
-
-    BillboardSet::~BillboardSet()
-    {
-        if (this->billboardSet_)
-            Orxonox::getSingleton()->getSceneManager()->destroyBillboardSet(this->billboardSet_);
-    }
-}
Index: de/branches/FICN/src/orxonox/objects/BillboardSet.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/BillboardSet.h	(revision 747)
+++ 	(revision )
@@ -1,34 +1,0 @@
-#ifndef _BillboardSet_H__
-#define _BillboardSet_H__
-
-#include <string>
-
-#include <OgreBillboardSet.h>
-
-#include "../OrxonoxPrereqs.h"
-
-#include "../core/CoreIncludes.h"
-#include "util/Math.h"
-
-namespace orxonox
-{
-    class _OrxonoxExport BillboardSet
-    {
-        public:
-            BillboardSet();
-            ~BillboardSet();
-            void setBillboardSet(const std::string& file, const ColourValue& colour = ColourValue(1.0, 1.0, 1.0), int count = 1, const Vector3& position = Vector3::ZERO);
-
-            inline Ogre::BillboardSet* getBillboardSet()
-                { return this->billboardSet_; }
-
-            inline const std::string& getName() const
-                { return this->billboardSet_->getName(); }
-
-        private:
-            static unsigned int billboardSetCounter_s;
-            Ogre::BillboardSet* billboardSet_;
-    };
-}
-
-#endif /* _BillboardSet_H__ */
Index: /code/branches/FICN/src/orxonox/objects/CMakeLists.txt
===================================================================
--- /code/branches/FICN/src/orxonox/objects/CMakeLists.txt	(revision 747)
+++ /code/branches/FICN/src/orxonox/objects/CMakeLists.txt	(revision 748)
@@ -1,3 +1,5 @@
 PROJECT(Orxonox)
+
+INCLUDE_DIRECTORIES(../tools)
 
 SET( OBJECTS_SRC_FILES
Index: de/branches/FICN/src/orxonox/objects/Light.cc
===================================================================
--- /code/branches/FICN/src/orxonox/objects/Light.cc	(revision 747)
+++ 	(revision )
@@ -1,33 +1,0 @@
-#include <sstream>
-
-#include <OgreSceneManager.h>
-
-#include "../Orxonox.h"
-
-#include "Light.h"
-
-namespace orxonox
-{
-    unsigned int Light::lightCounter_s = 0;
-
-    Light::Light()
-    {
-        this->light_ = 0;
-    }
-
-    void Light::setLight(Ogre::Light::LightTypes type, const ColourValue& diffuse, const ColourValue& specular)
-    {
-        std::ostringstream name;
-        name << (Light::lightCounter_s++);
-        this->light_ = Orxonox::getSingleton()->getSceneManager()->createLight("Light" + name.str());
-        this->light_->setType(type);
-        this->light_->setDiffuseColour(diffuse);
-        this->light_->setSpecularColour(specular);
-    }
-
-    Light::~Light()
-    {
-        if (this->light_)
-            Orxonox::getSingleton()->getSceneManager()->destroyLight(this->light_);
-    }
-}
Index: de/branches/FICN/src/orxonox/objects/Light.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/Light.h	(revision 747)
+++ 	(revision )
@@ -1,33 +1,0 @@
-#ifndef _Light_H__
-#define _Light_H__
-
-#include <string>
-
-#include <OgreLight.h>
-
-#include "../OrxonoxPrereqs.h"
-
-#include "util/Math.h"
-
-namespace orxonox
-{
-    class _OrxonoxExport Light
-    {
-        public:
-            Light();
-            ~Light();
-            void setLight(Ogre::Light::LightTypes type = Ogre::Light::LT_POINT, const ColourValue& diffuse = ColourValue(1.0, 1.0, 1.0), const ColourValue& specular = ColourValue(1.0, 1.0, 1.0));
-
-            inline Ogre::Light* getLight()
-                { return this->light_; }
-
-            inline const std::string& getName() const
-                { return this->light_->getName(); }
-
-        private:
-            static unsigned int lightCounter_s;
-            Ogre::Light* light_;
-    };
-}
-
-#endif /* _Light_H__ */
Index: de/branches/FICN/src/orxonox/objects/Mesh.cc
===================================================================
--- /code/branches/FICN/src/orxonox/objects/Mesh.cc	(revision 747)
+++ 	(revision )
@@ -1,57 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-#include <sstream>
-
-#include <OgreSceneManager.h>
-
-#include "../Orxonox.h"
-
-#include "Mesh.h"
-
-namespace orxonox
-{
-    unsigned int Mesh::meshCounter_s = 0;
-
-    Mesh::Mesh()
-    {
-        this->entity_ = 0;
-    }
-
-    void Mesh::setMesh(const std::string& file)
-    {
-        std::ostringstream name;
-        name << (Mesh::meshCounter_s++);
-        this->entity_ = Orxonox::getSingleton()->getSceneManager()->createEntity("Mesh" + name.str(), file);
-    }
-
-    Mesh::~Mesh()
-    {
-        if (this->entity_)
-            Orxonox::getSingleton()->getSceneManager()->destroyEntity(this->entity_);
-    }
-}
Index: de/branches/FICN/src/orxonox/objects/Mesh.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/Mesh.h	(revision 747)
+++ 	(revision )
@@ -1,31 +1,0 @@
-#ifndef _Mesh_H__
-#define _Mesh_H__
-
-#include <string>
-
-#include <OgreEntity.h>
-
-#include "../OrxonoxPrereqs.h"
-
-namespace orxonox
-{
-    class _OrxonoxExport Mesh
-    {
-        public:
-            Mesh();
-            ~Mesh();
-            void setMesh(const std::string& file);
-
-            inline Ogre::Entity* getEntity()
-                { return this->entity_; }
-
-            inline const std::string& getName() const
-                { return this->entity_->getName(); }
-
-        private:
-            static unsigned int meshCounter_s;
-            Ogre::Entity* entity_;
-    };
-}
-
-#endif /* _Mesh_H__ */
Index: de/branches/FICN/src/orxonox/objects/Timer.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/Timer.h	(revision 747)
+++ 	(revision )
@@ -1,199 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-/*!
-    @file Timer.h
-    @brief Definition and Implementation of the Timer class.
-
-    The Timer is a callback-object, calling a given function after a given time-interval.
-
-    Usage:
-    header.h:
-        class ClassName
-        {
-            public:
-                ClassName();
-                void functionName();
-                Timer<ClassName> myTimer;
-        };
-
-    source.cc:
-        ClassName::ClassName()
-        {
-            myTimer.setTimer(interval_in_seconds, bLoop, this, &ClassName::functionName);
-        }
-
-        void ClassName::functionName()
-        {
-            whateveryouwant();
-            something(else);
-        }
-*/
-
-#ifndef _Timer_H__
-#define _Timer_H__
-
-#include <OgreFrameListener.h>
-
-#include "../OrxonoxPrereqs.h"
-
-#include "../core/CoreIncludes.h"
-
-namespace orxonox
-{
-    //! TimerBase is the parent of the Timer class.
-    class _OrxonoxExport TimerBase : public OrxonoxClass
-    {
-        friend class TimerFrameListener;
-
-        public:
-            /** @brief Constructor: Sets the default-values. */
-            TimerBase()
-            {
-                RegisterRootObject(TimerBase);
-
-                this->interval_ = 0;
-                this->bLoop_ = false;
-                this->bActive_ = false;
-
-                this->time_ = 0;
-            }
-
-            virtual void run() const = 0;
-
-            /** @brief Starts the Timer: Function-call after 'interval' seconds. */
-            inline void startTimer() { this->bActive_ = true; this->time_ = this->interval_; }
-            /** @brief Stops the Timer. */
-            inline void stopTimer() { this->bActive_ = false; this->time_ = this->interval_; }
-            /** @brief Pauses the Timer - it will continue with the actual state if you unpause it. */
-            inline void pauseTimer() { this->bActive_ = false; }
-            /** @brief Unpauses the Timer - continues with the given state. */
-            inline void unpauseTimer() { this->bActive_ = true; }
-            /** @returns true if the Timer is active (= not stoped, not paused). */
-            inline bool isActive() const { return this->bActive_; }
-
-        protected:
-            float interval_;    //!< The time-interval in seconds
-            bool bLoop_;        //!< If true, the function gets called every 'interval' seconds
-            bool bActive_;      //!< If true, the Timer ticks and calls the function if the time's up
-
-            float time_;        //!< Internal variable, counting the time till the next function-call
-    };
-    ExportAbstractClass(TimerBase, Orxonox);
-
-    //! The Timer is a callback-object, calling a given function after a given time-interval.
-    template <class T = BaseObject>
-    class Timer : public TimerBase
-    {
-        public:
-            /** @brief Constructor: Sets the default-values. */
-            Timer()
-            {
-                this->timerFunction_ = 0;
-                this->object_ = 0;
-            }
-
-            /**
-                @brief Constructor: Initializes the Timer with given values.
-                @param interval The timer-interval in seconds
-                @param bLoop If true, the function gets called every 'interval' seconds
-                @param object The object owning the timer and the function
-                @param timerFunction A function pointer to the function to call
-            */
-            Timer(float interval, bool bLoop, T* object, void (T::*timerFunction)())
-            {
-                this->setTimer(interval, bLoop, timerFunction, object);
-            }
-
-            /**
-                @brief Initializes the Timer with given values.
-                @param interval The timer-interval in seconds
-                @param bLoop If true, the function gets called every 'interval' seconds
-                @param object The object owning the timer and the function
-                @param timerFunction A function pointer to the function to call
-            */
-            void setTimer(float interval, bool bLoop, T* object, void (T::*timerFunction)())
-            {
-                this->interval_ = interval;
-                this->bLoop_ = bLoop;
-                this->timerFunction_ = timerFunction;
-                this->object_ = object;
-                this->bActive_ = true;
-
-                this->time_ = interval;
-            }
-
-            /** @brief Calls the given function of the given object. */
-            void run() const
-            {
-                ((*this->object_).*timerFunction_)();
-            }
-
-        private:
-            void (T::*timerFunction_)();
-            T* object_;
-    };
-    ExportAbstractClass(Timer<BaseObject>, Orxonox);
-
-    //! The TimerFrameListener manages all Timers in the game.
-    class TimerFrameListener : public Ogre::FrameListener
-    {
-        private:
-            /** @brief Gets called before a frame gets rendered. */
-            bool frameStarted(const Ogre::FrameEvent &evt)
-            {
-                // Iterate through all Timers
-                for (Iterator<TimerBase> it = ObjectList<TimerBase>::start(); it; )
-                {
-                    if (it->isActive())
-                    {
-                        // If active: Decrease the timer by the duration of the last frame
-                        it->time_ -= evt.timeSinceLastFrame;
-
-                        if (it->time_ <= 0)
-                        {
-                            // It's time to call the function
-                            if (it->bLoop_)
-                                it->time_ += it->interval_; // Q: Why '+=' and not '='? A: Think about it. It's more accurate like that. Seriously.
-                            else
-                                it->stopTimer(); // Stop the timer if we don't want to loop
-
-                            (it++)->run();
-                        }
-                        else
-                            ++it;
-                    }
-                    else
-                        ++it;
-                }
-
-                return FrameListener::frameStarted(evt);
-            }
-    };
-}
-
-#endif /* _Timer_H__ */
Index: /code/branches/FICN/src/orxonox/tools/BillboardSet.cc
===================================================================
--- /code/branches/FICN/src/orxonox/tools/BillboardSet.cc	(revision 748)
+++ /code/branches/FICN/src/orxonox/tools/BillboardSet.cc	(revision 748)
@@ -0,0 +1,60 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Fabian 'x3n' Landau
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include <sstream>
+
+#include <OgreSceneManager.h>
+
+#include "../Orxonox.h"
+#include "util/Math.h"
+
+#include "BillboardSet.h"
+
+namespace orxonox
+{
+    unsigned int BillboardSet::billboardSetCounter_s = 0;
+
+    BillboardSet::BillboardSet()
+    {
+        this->billboardSet_ = 0;
+    }
+
+    void BillboardSet::setBillboardSet(const std::string& file, const ColourValue& colour, int count, const Vector3& position)
+    {
+        std::ostringstream name;
+        name << (BillboardSet::billboardSetCounter_s++);
+        this->billboardSet_ = Orxonox::getSingleton()->getSceneManager()->createBillboardSet("Billboard" + name.str(), count);
+        this->billboardSet_->createBillboard(position, colour);
+        this->billboardSet_->setMaterialName(file);
+    }
+
+    BillboardSet::~BillboardSet()
+    {
+        if (this->billboardSet_)
+            Orxonox::getSingleton()->getSceneManager()->destroyBillboardSet(this->billboardSet_);
+    }
+}
Index: /code/branches/FICN/src/orxonox/tools/BillboardSet.h
===================================================================
--- /code/branches/FICN/src/orxonox/tools/BillboardSet.h	(revision 748)
+++ /code/branches/FICN/src/orxonox/tools/BillboardSet.h	(revision 748)
@@ -0,0 +1,34 @@
+#ifndef _BillboardSet_H__
+#define _BillboardSet_H__
+
+#include <string>
+
+#include <OgreBillboardSet.h>
+
+#include "../OrxonoxPrereqs.h"
+
+#include "../core/CoreIncludes.h"
+#include "util/Math.h"
+
+namespace orxonox
+{
+    class _OrxonoxExport BillboardSet
+    {
+        public:
+            BillboardSet();
+            ~BillboardSet();
+            void setBillboardSet(const std::string& file, const ColourValue& colour = ColourValue(1.0, 1.0, 1.0), int count = 1, const Vector3& position = Vector3::ZERO);
+
+            inline Ogre::BillboardSet* getBillboardSet()
+                { return this->billboardSet_; }
+
+            inline const std::string& getName() const
+                { return this->billboardSet_->getName(); }
+
+        private:
+            static unsigned int billboardSetCounter_s;
+            Ogre::BillboardSet* billboardSet_;
+    };
+}
+
+#endif /* _BillboardSet_H__ */
Index: /code/branches/FICN/src/orxonox/tools/Light.cc
===================================================================
--- /code/branches/FICN/src/orxonox/tools/Light.cc	(revision 748)
+++ /code/branches/FICN/src/orxonox/tools/Light.cc	(revision 748)
@@ -0,0 +1,33 @@
+#include <sstream>
+
+#include <OgreSceneManager.h>
+
+#include "../Orxonox.h"
+
+#include "Light.h"
+
+namespace orxonox
+{
+    unsigned int Light::lightCounter_s = 0;
+
+    Light::Light()
+    {
+        this->light_ = 0;
+    }
+
+    void Light::setLight(Ogre::Light::LightTypes type, const ColourValue& diffuse, const ColourValue& specular)
+    {
+        std::ostringstream name;
+        name << (Light::lightCounter_s++);
+        this->light_ = Orxonox::getSingleton()->getSceneManager()->createLight("Light" + name.str());
+        this->light_->setType(type);
+        this->light_->setDiffuseColour(diffuse);
+        this->light_->setSpecularColour(specular);
+    }
+
+    Light::~Light()
+    {
+        if (this->light_)
+            Orxonox::getSingleton()->getSceneManager()->destroyLight(this->light_);
+    }
+}
Index: /code/branches/FICN/src/orxonox/tools/Light.h
===================================================================
--- /code/branches/FICN/src/orxonox/tools/Light.h	(revision 748)
+++ /code/branches/FICN/src/orxonox/tools/Light.h	(revision 748)
@@ -0,0 +1,33 @@
+#ifndef _Light_H__
+#define _Light_H__
+
+#include <string>
+
+#include <OgreLight.h>
+
+#include "../OrxonoxPrereqs.h"
+
+#include "util/Math.h"
+
+namespace orxonox
+{
+    class _OrxonoxExport Light
+    {
+        public:
+            Light();
+            ~Light();
+            void setLight(Ogre::Light::LightTypes type = Ogre::Light::LT_POINT, const ColourValue& diffuse = ColourValue(1.0, 1.0, 1.0), const ColourValue& specular = ColourValue(1.0, 1.0, 1.0));
+
+            inline Ogre::Light* getLight()
+                { return this->light_; }
+
+            inline const std::string& getName() const
+                { return this->light_->getName(); }
+
+        private:
+            static unsigned int lightCounter_s;
+            Ogre::Light* light_;
+    };
+}
+
+#endif /* _Light_H__ */
Index: /code/branches/FICN/src/orxonox/tools/Mesh.cc
===================================================================
--- /code/branches/FICN/src/orxonox/tools/Mesh.cc	(revision 748)
+++ /code/branches/FICN/src/orxonox/tools/Mesh.cc	(revision 748)
@@ -0,0 +1,57 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Fabian 'x3n' Landau
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include <sstream>
+
+#include <OgreSceneManager.h>
+
+#include "../Orxonox.h"
+
+#include "Mesh.h"
+
+namespace orxonox
+{
+    unsigned int Mesh::meshCounter_s = 0;
+
+    Mesh::Mesh()
+    {
+        this->entity_ = 0;
+    }
+
+    void Mesh::setMesh(const std::string& file)
+    {
+        std::ostringstream name;
+        name << (Mesh::meshCounter_s++);
+        this->entity_ = Orxonox::getSingleton()->getSceneManager()->createEntity("Mesh" + name.str(), file);
+    }
+
+    Mesh::~Mesh()
+    {
+        if (this->entity_)
+            Orxonox::getSingleton()->getSceneManager()->destroyEntity(this->entity_);
+    }
+}
Index: /code/branches/FICN/src/orxonox/tools/Mesh.h
===================================================================
--- /code/branches/FICN/src/orxonox/tools/Mesh.h	(revision 748)
+++ /code/branches/FICN/src/orxonox/tools/Mesh.h	(revision 748)
@@ -0,0 +1,31 @@
+#ifndef _Mesh_H__
+#define _Mesh_H__
+
+#include <string>
+
+#include <OgreEntity.h>
+
+#include "../OrxonoxPrereqs.h"
+
+namespace orxonox
+{
+    class _OrxonoxExport Mesh
+    {
+        public:
+            Mesh();
+            ~Mesh();
+            void setMesh(const std::string& file);
+
+            inline Ogre::Entity* getEntity()
+                { return this->entity_; }
+
+            inline const std::string& getName() const
+                { return this->entity_->getName(); }
+
+        private:
+            static unsigned int meshCounter_s;
+            Ogre::Entity* entity_;
+    };
+}
+
+#endif /* _Mesh_H__ */
Index: /code/branches/FICN/src/orxonox/tools/Timer.h
===================================================================
--- /code/branches/FICN/src/orxonox/tools/Timer.h	(revision 748)
+++ /code/branches/FICN/src/orxonox/tools/Timer.h	(revision 748)
@@ -0,0 +1,199 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Fabian 'x3n' Landau
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/*!
+    @file Timer.h
+    @brief Definition and Implementation of the Timer class.
+
+    The Timer is a callback-object, calling a given function after a given time-interval.
+
+    Usage:
+    header.h:
+        class ClassName
+        {
+            public:
+                ClassName();
+                void functionName();
+                Timer<ClassName> myTimer;
+        };
+
+    source.cc:
+        ClassName::ClassName()
+        {
+            myTimer.setTimer(interval_in_seconds, bLoop, this, &ClassName::functionName);
+        }
+
+        void ClassName::functionName()
+        {
+            whateveryouwant();
+            something(else);
+        }
+*/
+
+#ifndef _Timer_H__
+#define _Timer_H__
+
+#include <OgreFrameListener.h>
+
+#include "../OrxonoxPrereqs.h"
+
+#include "../core/CoreIncludes.h"
+
+namespace orxonox
+{
+    //! TimerBase is the parent of the Timer class.
+    class _OrxonoxExport TimerBase : public OrxonoxClass
+    {
+        friend class TimerFrameListener;
+
+        public:
+            /** @brief Constructor: Sets the default-values. */
+            TimerBase()
+            {
+                RegisterRootObject(TimerBase);
+
+                this->interval_ = 0;
+                this->bLoop_ = false;
+                this->bActive_ = false;
+
+                this->time_ = 0;
+            }
+
+            virtual void run() const = 0;
+
+            /** @brief Starts the Timer: Function-call after 'interval' seconds. */
+            inline void startTimer() { this->bActive_ = true; this->time_ = this->interval_; }
+            /** @brief Stops the Timer. */
+            inline void stopTimer() { this->bActive_ = false; this->time_ = this->interval_; }
+            /** @brief Pauses the Timer - it will continue with the actual state if you unpause it. */
+            inline void pauseTimer() { this->bActive_ = false; }
+            /** @brief Unpauses the Timer - continues with the given state. */
+            inline void unpauseTimer() { this->bActive_ = true; }
+            /** @returns true if the Timer is active (= not stoped, not paused). */
+            inline bool isActive() const { return this->bActive_; }
+
+        protected:
+            float interval_;    //!< The time-interval in seconds
+            bool bLoop_;        //!< If true, the function gets called every 'interval' seconds
+            bool bActive_;      //!< If true, the Timer ticks and calls the function if the time's up
+
+            float time_;        //!< Internal variable, counting the time till the next function-call
+    };
+    ExportAbstractClass(TimerBase, Orxonox);
+
+    //! The Timer is a callback-object, calling a given function after a given time-interval.
+    template <class T = BaseObject>
+    class Timer : public TimerBase
+    {
+        public:
+            /** @brief Constructor: Sets the default-values. */
+            Timer()
+            {
+                this->timerFunction_ = 0;
+                this->object_ = 0;
+            }
+
+            /**
+                @brief Constructor: Initializes the Timer with given values.
+                @param interval The timer-interval in seconds
+                @param bLoop If true, the function gets called every 'interval' seconds
+                @param object The object owning the timer and the function
+                @param timerFunction A function pointer to the function to call
+            */
+            Timer(float interval, bool bLoop, T* object, void (T::*timerFunction)())
+            {
+                this->setTimer(interval, bLoop, timerFunction, object);
+            }
+
+            /**
+                @brief Initializes the Timer with given values.
+                @param interval The timer-interval in seconds
+                @param bLoop If true, the function gets called every 'interval' seconds
+                @param object The object owning the timer and the function
+                @param timerFunction A function pointer to the function to call
+            */
+            void setTimer(float interval, bool bLoop, T* object, void (T::*timerFunction)())
+            {
+                this->interval_ = interval;
+                this->bLoop_ = bLoop;
+                this->timerFunction_ = timerFunction;
+                this->object_ = object;
+                this->bActive_ = true;
+
+                this->time_ = interval;
+            }
+
+            /** @brief Calls the given function of the given object. */
+            void run() const
+            {
+                ((*this->object_).*timerFunction_)();
+            }
+
+        private:
+            void (T::*timerFunction_)();
+            T* object_;
+    };
+    ExportAbstractClass(Timer<BaseObject>, Orxonox);
+
+    //! The TimerFrameListener manages all Timers in the game.
+    class TimerFrameListener : public Ogre::FrameListener
+    {
+        private:
+            /** @brief Gets called before a frame gets rendered. */
+            bool frameStarted(const Ogre::FrameEvent &evt)
+            {
+                // Iterate through all Timers
+                for (Iterator<TimerBase> it = ObjectList<TimerBase>::start(); it; )
+                {
+                    if (it->isActive())
+                    {
+                        // If active: Decrease the timer by the duration of the last frame
+                        it->time_ -= evt.timeSinceLastFrame;
+
+                        if (it->time_ <= 0)
+                        {
+                            // It's time to call the function
+                            if (it->bLoop_)
+                                it->time_ += it->interval_; // Q: Why '+=' and not '='? A: Think about it. It's more accurate like that. Seriously.
+                            else
+                                it->stopTimer(); // Stop the timer if we don't want to loop
+
+                            (it++)->run();
+                        }
+                        else
+                            ++it;
+                    }
+                    else
+                        ++it;
+                }
+
+                return FrameListener::frameStarted(evt);
+            }
+    };
+}
+
+#endif /* _Timer_H__ */
Index: de/branches/FICN/src/util/tinyxml/CMakeLists.txt
===================================================================
--- /code/branches/FICN/src/util/tinyxml/CMakeLists.txt	(revision 747)
+++ 	(revision )
@@ -1,18 +1,0 @@
-PROJECT(Orxonox)
-
-INCLUDE_DIRECTORIES(.)
-
-SET (SRC_FILES
-  tinystr.cc
-  tinyxml.cc
-  tinyxmlerror.cc
-  tinyxmlparser.cc
-  ticpp.cc
-)
-
-IF(WIN32)
-  ADD_LIBRARY(xml ${SRC_FILES})
-ELSE(WIN32)
-  ADD_LIBRARY(xml SHARED ${SRC_FILES})
-ENDIF(WIN32)
-
