Index: code/trunk/src/orxonox/tools/BillboardSet.h
===================================================================
--- code/trunk/src/orxonox/tools/BillboardSet.h	(revision 3370)
+++ code/trunk/src/orxonox/tools/BillboardSet.h	(revision 5693)
@@ -30,10 +30,10 @@
 #define _BillboardSet_H__
 
-#include "OrxonoxPrereqs.h"
+#include "tools/ToolsPrereqs.h"
 #include "util/OgreForwardRefs.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport BillboardSet
+    class _ToolsExport BillboardSet
     {
         public:
Index: code/trunk/src/orxonox/tools/BulletConversions.h
===================================================================
--- code/trunk/src/orxonox/tools/BulletConversions.h	(revision 3370)
+++ code/trunk/src/orxonox/tools/BulletConversions.h	(revision 5693)
@@ -30,5 +30,5 @@
 #define _BulletConversions_H__
 
-#include "OrxonoxPrereqs.h"
+#include "tools/ToolsPrereqs.h"
 
 #include "util/Convert.h"
Index: code/trunk/src/orxonox/tools/CMakeLists.txt
===================================================================
--- code/trunk/src/orxonox/tools/CMakeLists.txt	(revision 3370)
+++ code/trunk/src/orxonox/tools/CMakeLists.txt	(revision 5693)
@@ -1,3 +1,3 @@
-ADD_SOURCE_FILES(ORXONOX_SRC_FILES
+ADD_SOURCE_FILES(TOOLS_SRC_FILES
   BillboardSet.cc
   DynamicLines.cc
@@ -9,2 +9,11 @@
   Timer.cc
 )
+ADD_SUBDIRECTORY(interfaces)
+
+ORXONOX_ADD_LIBRARY(tools
+  DEFINE_SYMBOL
+    "TOOLS_SHARED_BUILD"
+  LINK_LIBRARIES
+    core
+  SOURCE_FILES ${TOOLS_SRC_FILES}
+)
Index: code/trunk/src/orxonox/tools/DynamicLines.h
===================================================================
--- code/trunk/src/orxonox/tools/DynamicLines.h	(revision 3370)
+++ code/trunk/src/orxonox/tools/DynamicLines.h	(revision 5693)
@@ -30,5 +30,5 @@
 #define _DynamicLines_H__
 
-#include "OrxonoxPrereqs.h"
+#include "tools/ToolsPrereqs.h"
 
 #include <vector>
@@ -37,5 +37,5 @@
 namespace Ogre
 {
-    class DynamicLines : public DynamicRenderable
+    class _ToolsExport DynamicLines : public DynamicRenderable
     {
         typedef RenderOperation::OperationType OperationType;
Index: code/trunk/src/orxonox/tools/DynamicRenderable.h
===================================================================
--- code/trunk/src/orxonox/tools/DynamicRenderable.h	(revision 3370)
+++ code/trunk/src/orxonox/tools/DynamicRenderable.h	(revision 5693)
@@ -30,5 +30,5 @@
 #define _DynamicRenderable_H__
 
-#include "OrxonoxPrereqs.h"
+#include "tools/ToolsPrereqs.h"
 
 #include <OgreSimpleRenderable.h>
@@ -37,5 +37,5 @@
 {
     /// Abstract base class providing mechanisms for dynamically growing hardware buffers.
-    class DynamicRenderable : public SimpleRenderable
+    class _ToolsExport DynamicRenderable : public SimpleRenderable
     {
     public:
Index: code/trunk/src/orxonox/tools/Mesh.h
===================================================================
--- code/trunk/src/orxonox/tools/Mesh.h	(revision 3370)
+++ code/trunk/src/orxonox/tools/Mesh.h	(revision 5693)
@@ -30,10 +30,10 @@
 #define _Mesh_H__
 
-#include "OrxonoxPrereqs.h"
+#include "tools/ToolsPrereqs.h"
 #include "util/OgreForwardRefs.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport Mesh
+    class _ToolsExport Mesh
     {
         public:
Index: code/trunk/src/orxonox/tools/ParticleInterface.h
===================================================================
--- code/trunk/src/orxonox/tools/ParticleInterface.h	(revision 3370)
+++ code/trunk/src/orxonox/tools/ParticleInterface.h	(revision 5693)
@@ -30,8 +30,8 @@
 #define _ParticleInterface_H__
 
-#include "OrxonoxPrereqs.h"
+#include "tools/ToolsPrereqs.h"
 
 #include "util/OgreForwardRefs.h"
-#include "interfaces/TimeFactorListener.h"
+#include "tools/interfaces/TimeFactorListener.h"
 
 #define getAllEmitters() \
@@ -42,5 +42,5 @@
 namespace orxonox
 {
-    class _OrxonoxExport ParticleInterface : public TimeFactorListener
+    class _ToolsExport ParticleInterface : public TimeFactorListener
     {
         public:
Index: code/trunk/src/orxonox/tools/Shader.h
===================================================================
--- code/trunk/src/orxonox/tools/Shader.h	(revision 3370)
+++ code/trunk/src/orxonox/tools/Shader.h	(revision 5693)
@@ -30,5 +30,5 @@
 #define _Shader_H__
 
-#include "OrxonoxPrereqs.h"
+#include "tools/ToolsPrereqs.h"
 
 #include <map>
@@ -37,9 +37,9 @@
 
 #include "util/OgreForwardRefs.h"
-#include "interfaces/Tickable.h"
+#include "tools/interfaces/Tickable.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport Shader : public Tickable
+    class _ToolsExport Shader : public Tickable
     {
         typedef std::pair<bool, void*>                  ParameterPointer;
Index: code/trunk/src/orxonox/tools/TextureGenerator.h
===================================================================
--- code/trunk/src/orxonox/tools/TextureGenerator.h	(revision 3370)
+++ code/trunk/src/orxonox/tools/TextureGenerator.h	(revision 5693)
@@ -35,5 +35,5 @@
 #define _TextureGenerator_H__
 
-#include "OrxonoxPrereqs.h"
+#include "tools/ToolsPrereqs.h"
 
 #include <map>
@@ -43,5 +43,5 @@
 namespace orxonox
 {
-    class _OrxonoxExport TextureGenerator
+    class _ToolsExport TextureGenerator
     {
     public:
Index: code/trunk/src/orxonox/tools/Timer.h
===================================================================
--- code/trunk/src/orxonox/tools/Timer.h	(revision 3370)
+++ code/trunk/src/orxonox/tools/Timer.h	(revision 5693)
@@ -61,9 +61,9 @@
 #define _Timer_H__
 
-#include "OrxonoxPrereqs.h"
+#include "tools/ToolsPrereqs.h"
 
 #include "core/Executor.h"
 #include "core/OrxonoxClass.h"
-#include "interfaces/TimeFactorListener.h"
+#include "tools/interfaces/TimeFactorListener.h"
 
 namespace orxonox
@@ -75,5 +75,5 @@
 
     //! TimerBase is the parent of the Timer class.
-    class _OrxonoxExport TimerBase : public TimeFactorListener
+    class _ToolsExport TimerBase : public TimeFactorListener
     {
         public:
@@ -171,5 +171,5 @@
 
     //! The StaticTimer is a callback-object, calling a static function after a given time-interval.
-    class StaticTimer : public TimerBase
+    class _ToolsExport StaticTimer : public TimerBase
     {
         public:
Index: code/trunk/src/orxonox/tools/ToolsPrereqs.h
===================================================================
--- code/trunk/src/orxonox/tools/ToolsPrereqs.h	(revision 5693)
+++ code/trunk/src/orxonox/tools/ToolsPrereqs.h	(revision 5693)
@@ -0,0 +1,91 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   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:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+  @file
+  @brief Contains all the necessary forward declarations for all classes and structs.
+*/
+
+#ifndef _ToolsPrereqs_H__
+#define _ToolsPrereqs_H__
+
+#include "OrxonoxConfig.h"
+
+//-----------------------------------------------------------------------
+// Shared library settings
+//-----------------------------------------------------------------------
+#if defined(ORXONOX_PLATFORM_WINDOWS) && !defined(ORXONOX_STATIC_BUILD)
+#  ifdef TOOLS_SHARED_BUILD
+#    define _ToolsExport __declspec(dllexport)
+#  else
+#    if defined( __MINGW32__ )
+#      define _ToolsExport
+#    else
+#      define _ToolsExport __declspec(dllimport)
+#    endif
+#  endif
+#elif defined ( ORXONOX_GCC_VISIBILITY )
+#  define _ToolsExport  __attribute__ ((visibility("default")))
+#else
+#  define _ToolsExport
+#endif
+
+//-----------------------------------------------------------------------
+// Forward declarations
+//-----------------------------------------------------------------------
+
+namespace orxonox
+{
+    namespace LODParticle
+    {
+        enum Value
+        {
+            Off = 0,
+            Low = 1,
+            Normal = 2,
+            High = 3
+        };
+    }
+
+    class BillboardSet;
+    class Mesh;
+    class ParticleInterface;
+    class Shader;
+    template <class T>
+    class Timer;
+    class StaticTimer;
+}
+
+namespace Ogre
+{
+    // OGRE Wiki adapted code
+    class DynamicLines;
+    class DynamicRenderable;
+}
+
+#endif /* _ToolsPrereqs_H__ */
Index: code/trunk/src/orxonox/tools/interfaces/CMakeLists.txt
===================================================================
--- code/trunk/src/orxonox/tools/interfaces/CMakeLists.txt	(revision 5693)
+++ code/trunk/src/orxonox/tools/interfaces/CMakeLists.txt	(revision 5693)
@@ -0,0 +1,3 @@
+ADD_SOURCE_FILES(TOOLS_SRC_FILES
+  ToolsInterfaceCompilation.cc
+)
Index: code/trunk/src/orxonox/tools/interfaces/Tickable.h
===================================================================
--- code/trunk/src/orxonox/tools/interfaces/Tickable.h	(revision 5693)
+++ code/trunk/src/orxonox/tools/interfaces/Tickable.h	(revision 5693)
@@ -0,0 +1,68 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   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
+    @brief Declaration of the Tickable interface.
+
+    The Tickable interface provides a tick(dt) function, that gets called every frame.
+    float dt is the time since the last frame in seconds.
+
+    Attention:
+    Classes derived from a Tickable that want to have a tick(dt) function on their part, MUST call the
+    parent::tick(dt) function explicitly in their implementation of tick(dt) because it's a virtual function.
+*/
+
+#ifndef _Tickable_H__
+#define _Tickable_H__
+
+#include "tools/ToolsPrereqs.h"
+
+#include "core/OrxonoxClass.h"
+#include "core/Super.h"
+
+namespace orxonox
+{
+    //! The Tickable interface provides a tick(dt) function, that gets called every frame.
+    class _ToolsExport Tickable : virtual public OrxonoxClass
+    {
+        public:
+            /**
+                @brief Gets called every frame.
+                @param dt The time since the last frame in seconds
+            */
+            virtual void tick(float dt) { }
+
+        protected:
+            Tickable();
+    };
+
+    SUPER_FUNCTION(1, Tickable, tick, true);
+}
+
+#endif /* _Tickable_H__ */
Index: code/trunk/src/orxonox/tools/interfaces/TimeFactorListener.h
===================================================================
--- code/trunk/src/orxonox/tools/interfaces/TimeFactorListener.h	(revision 5693)
+++ code/trunk/src/orxonox/tools/interfaces/TimeFactorListener.h	(revision 5693)
@@ -0,0 +1,55 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   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:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _TimeFactorListener_H__
+#define _TimeFactorListener_H__
+
+#include "tools/ToolsPrereqs.h"
+#include "core/OrxonoxClass.h"
+
+namespace orxonox
+{
+    class _ToolsExport TimeFactorListener : virtual public OrxonoxClass
+    {
+        friend class GSRoot;
+
+        public:
+            TimeFactorListener();
+            virtual ~TimeFactorListener() {}
+
+        protected:
+            virtual void changedTimeFactor(float factor_new, float factor_old) {}
+            inline float getTimeFactor() const
+                { return TimeFactorListener::timefactor_s; }
+
+        private:
+            static float timefactor_s;
+    };
+}
+
+#endif /* _TimeFactorListener_H__ */
Index: code/trunk/src/orxonox/tools/interfaces/ToolsInterfaceCompilation.cc
===================================================================
--- code/trunk/src/orxonox/tools/interfaces/ToolsInterfaceCompilation.cc	(revision 5693)
+++ code/trunk/src/orxonox/tools/interfaces/ToolsInterfaceCompilation.cc	(revision 5693)
@@ -0,0 +1,62 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   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:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+@file
+@brief
+    Compiles all the interfaces in the tools library with mostly just a constructor.
+*/
+
+#include "Tickable.h"
+#include "TimeFactorListener.h"
+
+#include "core/CoreIncludes.h"
+
+namespace orxonox
+{
+    //----------------------------
+    // TimeFactorListener
+    //----------------------------
+    float TimeFactorListener::timefactor_s = 1.0f;
+
+    TimeFactorListener::TimeFactorListener()
+    {
+        RegisterRootObject(TimeFactorListener);
+    }
+
+    //----------------------------
+    // Tickable
+    //----------------------------
+    /**
+        @brief Constructor: Registers the object in the Tickable-list
+    */
+    Tickable::Tickable()
+    {
+        RegisterRootObject(Tickable);
+    }
+}
