Index: code/branches/input/src/audio/AudioManager.h
===================================================================
--- code/branches/input/src/audio/AudioManager.h	(revision 1523)
+++ code/branches/input/src/audio/AudioManager.h	(revision 1524)
@@ -35,9 +35,7 @@
 #include <string>
 
-#include "core/Tickable.h"
-
 namespace audio
 {
-  class _AudioExport AudioManager : public orxonox::Tickable
+  class _AudioExport AudioManager
 	{
 	public:
Index: code/branches/input/src/core/CMakeLists.txt
===================================================================
--- code/branches/input/src/core/CMakeLists.txt	(revision 1523)
+++ code/branches/input/src/core/CMakeLists.txt	(revision 1524)
@@ -4,5 +4,5 @@
   ConfigFileManager.cc
   ConfigValueContainer.cc
-  CoreSettings.cc
+  Core.cc
   Error.cc
   Executor.cc
@@ -27,5 +27,4 @@
   SignalHandler.cc
   TclBind.cc
-  Tickable.cc
   XMLPort.cc
   TclThreadManager.cc
Index: code/branches/input/src/core/Core.cc
===================================================================
--- code/branches/input/src/core/Core.cc	(revision 1524)
+++ code/branches/input/src/core/Core.cc	(revision 1524)
@@ -0,0 +1,209 @@
+/*
+ *   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 Core.cc
+    @brief Implementation of the Core class.
+*/
+
+#include "Core.h"
+#include "Language.h"
+#include "CoreIncludes.h"
+#include "ConfigValueIncludes.h"
+#include "input/InputManager.h"
+#include "TclThreadManager.h"
+
+namespace orxonox
+{
+    /**
+        @brief Constructor: Registers the object and sets the config-values.
+        @param A reference to a global variable, used to avoid an infinite recursion in getSoftDebugLevel()
+    */
+    Core::Core()
+    {
+        RegisterRootObject(Core);
+        this->setConfigValues();
+    }
+
+    /**
+        @brief Sets the bool to true to avoid static functions accessing a deleted object.
+    */
+    Core::~Core()
+    {
+        isCreatingCoreSettings() = true;
+    }
+
+    /**
+        @brief Returns true if the Core instance is not yet ready and the static functions have to return a default value.
+    */
+    bool& Core::isCreatingCoreSettings()
+    {
+        static bool bCreatingCoreSettings = true;
+        static bool bFirstTime = true;
+        if (bFirstTime)
+        {
+            bFirstTime = false;
+            Core::getInstance();
+        }
+        return bCreatingCoreSettings;
+    }
+
+    /**
+        @brief Returns a unique instance of Core.
+        @return The instance
+    */
+    Core& Core::getInstance()
+    {
+        static Core instance = Core();
+
+        // If bCreatingSoftDebugLevelObject is true, we're just about to create an instance of the DebugLevel class
+        if (Core::isCreatingCoreSettings())
+        {
+            isCreatingCoreSettings() = false;
+            instance.setConfigValues();
+        }
+        return instance;
+    }
+
+    /**
+        @brief Function to collect the SetConfigValue-macro calls.
+    */
+    void Core::setConfigValues()
+    {
+        SetConfigValue(softDebugLevelConsole_, 3).description("The maximal level of debug output shown in the console");
+        SetConfigValue(softDebugLevelLogfile_, 3).description("The maximal level of debug output shown in the logfile");
+        SetConfigValue(softDebugLevelShell_, 1).description("The maximal level of debug output shown in the ingame shell");
+
+        // softDebugLevel_ is the maximum of the 3 variables
+        this->softDebugLevel_ = this->softDebugLevelConsole_;
+        if (this->softDebugLevelLogfile_ > this->softDebugLevel_)
+            this->softDebugLevel_ = this->softDebugLevelLogfile_;
+        if (this->softDebugLevelShell_ > this->softDebugLevel_)
+            this->softDebugLevel_ = this->softDebugLevelShell_;
+
+
+        std::string temp = this->language_;
+        SetConfigValue(language_, Language::getLanguage().defaultLanguage_).description("The language of the ingame text");
+
+        if (this->language_ != temp)
+        {
+            // Read the translation file after the language was configured
+            Language::getLanguage().readTranslatedLanguageFile();
+        }
+    }
+
+    /**
+        @brief Returns the softDebugLevel for the given device (returns a default-value if the class ist right about to be created).
+        @param device The device
+        @return The softDebugLevel
+    */
+    int Core::getSoftDebugLevel(OutputHandler::OutputDevice device)
+    {
+        if (!Core::isCreatingCoreSettings())
+        {
+            if (device == OutputHandler::LD_All)
+                return Core::getInstance().softDebugLevel_;
+            else if (device == OutputHandler::LD_Console)
+                return Core::getInstance().softDebugLevelConsole_;
+            else if (device == OutputHandler::LD_Logfile)
+                return Core::getInstance().softDebugLevelLogfile_;
+            else if (device == OutputHandler::LD_Shell)
+                return Core::getInstance().softDebugLevelShell_;
+        }
+
+        // Return a constant value while we're creating the object
+        return 2;
+    }
+
+     /**
+        @brief Sets the softDebugLevel for the given device. Please use this only temporary and restore the value afterwards, as it overrides the configured value.
+        @param device The device
+        @param level The level
+    */
+     void Core::setSoftDebugLevel(OutputHandler::OutputDevice device, int level)
+     {
+        if (!Core::isCreatingCoreSettings())
+        {
+            if (device == OutputHandler::LD_All)
+                Core::getInstance().softDebugLevel_ = level;
+            else if (device == OutputHandler::LD_Console)
+                Core::getInstance().softDebugLevelConsole_ = level;
+            else if (device == OutputHandler::LD_Logfile)
+                Core::getInstance().softDebugLevelLogfile_ = level;
+            else if (device == OutputHandler::LD_Shell)
+                Core::getInstance().softDebugLevelShell_ = level;
+        }
+     }
+
+    /**
+        @brief Returns the configured language.
+    */
+    const std::string& Core::getLanguage()
+    {
+        if (!Core::isCreatingCoreSettings())
+            return Core::getInstance().language_;
+
+        return Language::getLanguage().defaultLanguage_;
+    }
+
+    /**
+        @brief Sets the language in the config-file back to the default.
+    */
+    void Core::resetLanguage()
+    {
+        Core::getInstance().resetLanguageIntern();
+    }
+
+    /**
+        @brief Sets the language in the config-file back to the default.
+    */
+    void Core::resetLanguageIntern()
+    {
+        ResetConfigValue(language_);
+    }
+
+    /**
+        @brief Ticks every core class in a specified sequence. Has to be called
+               every Orxonox tick!
+        @param dt Delta Time
+    */
+    void Core::tick(float dt)
+    {
+        TclThreadManager::getInstance().tick(dt);
+        InputManager::tick(dt);
+    }
+}
+
+/**
+    @brief Returns the soft debug level, stored in the only existing instance of the DebugLevel class, configured in the config-file.
+    @return The soft debug level
+*/
+int getSoftDebugLevel()
+{
+    return orxonox::Core::getSoftDebugLevel();
+}
Index: code/branches/input/src/core/Core.h
===================================================================
--- code/branches/input/src/core/Core.h	(revision 1524)
+++ code/branches/input/src/core/Core.h	(revision 1524)
@@ -0,0 +1,77 @@
+/*
+ *   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 Core.h
+    @brief Definition of the Core class.
+
+    The Core class is a singleton, only used to configure some variables
+    in the core through the config-file.
+*/
+
+#ifndef _CoreSettings_H__
+#define _CoreSettings_H__
+
+#include "CorePrereqs.h"
+
+#include "OrxonoxClass.h"
+#include "OutputHandler.h"
+
+namespace orxonox
+{
+    //! The Core class is a singleton, only used to configure some config-values.
+    class _CoreExport Core : public OrxonoxClass
+    {
+        public:
+            static Core& getInstance();
+            static bool& isCreatingCoreSettings();
+            void setConfigValues();
+
+            static int getSoftDebugLevel(OutputHandler::OutputDevice device = OutputHandler::LD_All);
+            static void setSoftDebugLevel(OutputHandler::OutputDevice device, int level);
+            static const std::string& getLanguage();
+            static void resetLanguage();
+
+            static void tick(float dt);
+
+        private:
+            void resetLanguageIntern();
+
+            Core();
+            Core(const Core& other);
+            virtual ~Core();
+
+            int softDebugLevel_;                            //!< The debug level
+            int softDebugLevelConsole_;                     //!< The debug level for the console
+            int softDebugLevelLogfile_;                     //!< The debug level for the logfile
+            int softDebugLevelShell_;                       //!< The debug level for the ingame shell
+            std::string language_;                          //!< The language
+    };
+}
+
+#endif /* _CoreSettings_H__ */
Index: code/branches/input/src/core/CorePrereqs.h
===================================================================
--- code/branches/input/src/core/CorePrereqs.h	(revision 1523)
+++ code/branches/input/src/core/CorePrereqs.h	(revision 1524)
@@ -112,5 +112,5 @@
   class ConfigValueContainer;
   class ConsoleCommand;
-  class CoreSettings;
+  class Core;
   class Error;
   class Executor;
Index: code/branches/input/src/core/CoreSettings.cc
===================================================================
--- code/branches/input/src/core/CoreSettings.cc	(revision 1523)
+++ 	(revision )
@@ -1,196 +1,0 @@
-/*
- *   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 CoreSettings.cc
-    @brief Implementation of the CoreSettings class.
-*/
-
-#include "CoreSettings.h"
-#include "Language.h"
-#include "CoreIncludes.h"
-#include "ConfigValueIncludes.h"
-
-namespace orxonox
-{
-    /**
-        @brief Constructor: Registers the object and sets the config-values.
-        @param A reference to a global variable, used to avoid an infinite recursion in getSoftDebugLevel()
-    */
-    CoreSettings::CoreSettings()
-    {
-        RegisterRootObject(CoreSettings);
-        this->setConfigValues();
-    }
-
-    /**
-        @brief Sets the bool to true to avoid static functions accessing a deleted object.
-    */
-    CoreSettings::~CoreSettings()
-    {
-        isCreatingCoreSettings() = true;
-    }
-
-    /**
-        @brief Returns true if the CoreSettings instance is not yet ready and the static functions have to return a default value.
-    */
-    bool& CoreSettings::isCreatingCoreSettings()
-    {
-        static bool bCreatingCoreSettings = true;
-        static bool bFirstTime = true;
-        if (bFirstTime)
-        {
-            bFirstTime = false;
-            CoreSettings::getInstance();
-        }
-        return bCreatingCoreSettings;
-    }
-
-    /**
-        @brief Returns a unique instance of CoreSettings.
-        @return The instance
-    */
-    CoreSettings& CoreSettings::getInstance()
-    {
-        static CoreSettings instance = CoreSettings();
-
-        // If bCreatingSoftDebugLevelObject is true, we're just about to create an instance of the DebugLevel class
-        if (CoreSettings::isCreatingCoreSettings())
-        {
-            isCreatingCoreSettings() = false;
-            instance.setConfigValues();
-        }
-        return instance;
-    }
-
-    /**
-        @brief Function to collect the SetConfigValue-macro calls.
-    */
-    void CoreSettings::setConfigValues()
-    {
-        SetConfigValue(softDebugLevelConsole_, 3).description("The maximal level of debug output shown in the console");
-        SetConfigValue(softDebugLevelLogfile_, 3).description("The maximal level of debug output shown in the logfile");
-        SetConfigValue(softDebugLevelShell_, 1).description("The maximal level of debug output shown in the ingame shell");
-
-        // softDebugLevel_ is the maximum of the 3 variables
-        this->softDebugLevel_ = this->softDebugLevelConsole_;
-        if (this->softDebugLevelLogfile_ > this->softDebugLevel_)
-            this->softDebugLevel_ = this->softDebugLevelLogfile_;
-        if (this->softDebugLevelShell_ > this->softDebugLevel_)
-            this->softDebugLevel_ = this->softDebugLevelShell_;
-
-
-        std::string temp = this->language_;
-        SetConfigValue(language_, Language::getLanguage().defaultLanguage_).description("The language of the ingame text");
-
-        if (this->language_ != temp)
-        {
-            // Read the translation file after the language was configured
-            Language::getLanguage().readTranslatedLanguageFile();
-        }
-    }
-
-    /**
-        @brief Returns the softDebugLevel for the given device (returns a default-value if the class ist right about to be created).
-        @param device The device
-        @return The softDebugLevel
-    */
-    int CoreSettings::getSoftDebugLevel(OutputHandler::OutputDevice device)
-    {
-        if (!CoreSettings::isCreatingCoreSettings())
-        {
-            if (device == OutputHandler::LD_All)
-                return CoreSettings::getInstance().softDebugLevel_;
-            else if (device == OutputHandler::LD_Console)
-                return CoreSettings::getInstance().softDebugLevelConsole_;
-            else if (device == OutputHandler::LD_Logfile)
-                return CoreSettings::getInstance().softDebugLevelLogfile_;
-            else if (device == OutputHandler::LD_Shell)
-                return CoreSettings::getInstance().softDebugLevelShell_;
-        }
-
-        // Return a constant value while we're creating the object
-        return 2;
-    }
-
-     /**
-        @brief Sets the softDebugLevel for the given device. Please use this only temporary and restore the value afterwards, as it overrides the configured value.
-        @param device The device
-        @param level The level
-    */
-     void CoreSettings::setSoftDebugLevel(OutputHandler::OutputDevice device, int level)
-     {
-        if (!CoreSettings::isCreatingCoreSettings())
-        {
-            if (device == OutputHandler::LD_All)
-                CoreSettings::getInstance().softDebugLevel_ = level;
-            else if (device == OutputHandler::LD_Console)
-                CoreSettings::getInstance().softDebugLevelConsole_ = level;
-            else if (device == OutputHandler::LD_Logfile)
-                CoreSettings::getInstance().softDebugLevelLogfile_ = level;
-            else if (device == OutputHandler::LD_Shell)
-                CoreSettings::getInstance().softDebugLevelShell_ = level;
-        }
-     }
-
-    /**
-        @brief Returns the configured language.
-    */
-    const std::string& CoreSettings::getLanguage()
-    {
-        if (!CoreSettings::isCreatingCoreSettings())
-            return CoreSettings::getInstance().language_;
-
-        return Language::getLanguage().defaultLanguage_;
-    }
-
-    /**
-        @brief Sets the language in the config-file back to the default.
-    */
-    void CoreSettings::resetLanguage()
-    {
-        CoreSettings::getInstance().resetLanguageIntern();
-    }
-
-    /**
-        @brief Sets the language in the config-file back to the default.
-    */
-    void CoreSettings::resetLanguageIntern()
-    {
-        ResetConfigValue(language_);
-    }
-}
-
-/**
-    @brief Returns the soft debug level, stored in the only existing instance of the DebugLevel class, configured in the config-file.
-    @return The soft debug level
-*/
-int getSoftDebugLevel()
-{
-    return orxonox::CoreSettings::getSoftDebugLevel();
-}
Index: code/branches/input/src/core/CoreSettings.h
===================================================================
--- code/branches/input/src/core/CoreSettings.h	(revision 1523)
+++ 	(revision )
@@ -1,75 +1,0 @@
-/*
- *   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 CoreSettings.h
-    @brief Definition of the CoreSettings class.
-
-    The CoreSettings class is a singleton, only used to configure some variables
-    in the core through the config-file.
-*/
-
-#ifndef _CoreSettings_H__
-#define _CoreSettings_H__
-
-#include "CorePrereqs.h"
-
-#include "OrxonoxClass.h"
-#include "OutputHandler.h"
-
-namespace orxonox
-{
-    //! The CoreSettings class is a singleton, only used to configure some config-values.
-    class _CoreExport CoreSettings : public OrxonoxClass
-    {
-        public:
-            static CoreSettings& getInstance();
-            static bool& isCreatingCoreSettings();
-            void setConfigValues();
-
-            static int getSoftDebugLevel(OutputHandler::OutputDevice device = OutputHandler::LD_All);
-            static void setSoftDebugLevel(OutputHandler::OutputDevice device, int level);
-            static const std::string& getLanguage();
-            static void resetLanguage();
-
-        private:
-            void resetLanguageIntern();
-
-            CoreSettings();
-            CoreSettings(const CoreSettings& other);
-            virtual ~CoreSettings();
-
-            int softDebugLevel_;                            //!< The debug level
-            int softDebugLevelConsole_;                     //!< The debug level for the console
-            int softDebugLevelLogfile_;                     //!< The debug level for the logfile
-            int softDebugLevelShell_;                       //!< The debug level for the ingame shell
-            std::string language_;                          //!< The language
-    };
-}
-
-#endif /* _CoreSettings_H__ */
Index: code/branches/input/src/core/Language.cc
===================================================================
--- code/branches/input/src/core/Language.cc	(revision 1523)
+++ code/branches/input/src/core/Language.cc	(revision 1524)
@@ -36,5 +36,5 @@
 #include <fstream>
 
-#include "CoreSettings.h"
+#include "Core.h"
 
 #include "Debug.h"
@@ -245,15 +245,15 @@
     void Language::readTranslatedLanguageFile()
     {
-        COUT(4) << "Read translated language file (" << CoreSettings::getLanguage() << ")." << std::endl;
+        COUT(4) << "Read translated language file (" << Core::getLanguage() << ")." << std::endl;
 
         // Open the file
         std::ifstream file;
-        file.open(getFileName(CoreSettings::getLanguage()).c_str(), std::fstream::in);
+        file.open(getFileName(Core::getLanguage()).c_str(), std::fstream::in);
 
         if (!file.is_open())
         {
             COUT(1) << "An error occurred in Language.cc:" << std::endl;
-            COUT(1) << "Error: Couldn't open file " << getFileName(CoreSettings::getLanguage()) << " to read the translated language entries!" << std::endl;
-            CoreSettings::resetLanguage();
+            COUT(1) << "Error: Couldn't open file " << getFileName(Core::getLanguage()) << " to read the translated language entries!" << std::endl;
+            Core::resetLanguage();
             COUT(3) << "Info: Reset language to " << this->defaultLanguage_ << "." << std::endl;
             return;
@@ -286,5 +286,5 @@
                 else
                 {
-                    COUT(2) << "Warning: Invalid language entry \"" << lineString << "\" in " << getFileName(CoreSettings::getLanguage()) << std::endl;
+                    COUT(2) << "Warning: Invalid language entry \"" << lineString << "\" in " << getFileName(Core::getLanguage()) << std::endl;
                 }
             }
Index: code/branches/input/src/core/Language.h
===================================================================
--- code/branches/input/src/core/Language.h	(revision 1523)
+++ code/branches/input/src/core/Language.h	(revision 1524)
@@ -113,5 +113,5 @@
     class _CoreExport Language
     {
-        friend class CoreSettings;
+        friend class Core;
 
         public:
Index: code/branches/input/src/core/OutputHandler.cc
===================================================================
--- code/branches/input/src/core/OutputHandler.cc	(revision 1523)
+++ code/branches/input/src/core/OutputHandler.cc	(revision 1524)
@@ -33,5 +33,5 @@
 
 #include "OutputHandler.h"
-#include "CoreSettings.h"
+#include "Core.h"
 #include "ConsoleCommand.h"
 #include "Shell.h"
@@ -83,5 +83,5 @@
     int OutputHandler::getSoftDebugLevel(OutputHandler::OutputDevice device)
     {
-        return CoreSettings::getSoftDebugLevel(device);
+        return Core::getSoftDebugLevel(device);
     }
 
Index: code/branches/input/src/core/Shell.cc
===================================================================
--- code/branches/input/src/core/Shell.cc	(revision 1523)
+++ code/branches/input/src/core/Shell.cc	(revision 1524)
@@ -31,5 +31,5 @@
 #include "CoreIncludes.h"
 #include "ConfigValueIncludes.h"
-#include "CoreSettings.h"
+#include "Core.h"
 #include "ConsoleCommand.h"
 #include "input/InputInterfaces.h"
@@ -67,8 +67,8 @@
     Shell& Shell::createShell()
     {
-        int level = CoreSettings::getSoftDebugLevel(OutputHandler::LD_Shell);
-        CoreSettings::setSoftDebugLevel(OutputHandler::LD_Shell, -1);
+        int level = Core::getSoftDebugLevel(OutputHandler::LD_Shell);
+        Core::setSoftDebugLevel(OutputHandler::LD_Shell, -1);
         static Shell instance;
-        CoreSettings::setSoftDebugLevel(OutputHandler::LD_Shell, level);
+        Core::setSoftDebugLevel(OutputHandler::LD_Shell, level);
         return instance;
     }
Index: code/branches/input/src/core/TclThreadManager.h
===================================================================
--- code/branches/input/src/core/TclThreadManager.h	(revision 1523)
+++ code/branches/input/src/core/TclThreadManager.h	(revision 1524)
@@ -30,4 +30,6 @@
 #define _TclThreadManager_H__
 
+#include "CorePrereqs.h"
+
 #include <queue>
 #include <map>
@@ -38,7 +40,6 @@
 #include <boost/thread/thread.hpp>
 
-#include "CorePrereqs.h"
-#include "Tickable.h"
 #include "cpptcl/CppTcl.h"
+#include "core/OrxonoxClass.h"
 
 namespace orxonox
@@ -68,5 +69,5 @@
     };
 
-    class _CoreExport TclThreadManager : public Tickable
+    class _CoreExport TclThreadManager : public OrxonoxClass
     {
         public:
Index: code/branches/input/src/core/TheCore.cc
===================================================================
--- code/branches/input/src/core/TheCore.cc	(revision 1524)
+++ code/branches/input/src/core/TheCore.cc	(revision 1524)
@@ -0,0 +1,40 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+#include "TheCore.h"
+#include "input/InputManager.h"
+#include "TclThreadManager.h"
+
+namespace orxonox
+{
+  /*static*/ void TheCore::tick(float dt)
+  {
+    TclThreadManager::getInstance().tick(dt);
+    InputManager::tick(dt);
+  }
+}
Index: code/branches/input/src/core/TheCore.h
===================================================================
--- code/branches/input/src/core/TheCore.h	(revision 1524)
+++ code/branches/input/src/core/TheCore.h	(revision 1524)
@@ -0,0 +1,42 @@
+/*
+ *   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 _TheCore_H__
+#define _TheCore_H__
+
+#include "CorePrereqs.h"
+
+namespace orxonox
+{
+  class _CoreExport TheCore
+  {
+    static void tick(float dt);
+  };
+}
+
+#endif /* _TheCore_H__ */
Index: code/branches/input/src/core/Tickable.cc
===================================================================
--- code/branches/input/src/core/Tickable.cc	(revision 1523)
+++ 	(revision )
@@ -1,50 +1,0 @@
-/*
- *   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:
- *      ...
- *
- */
-
-#include "Tickable.h"
-#include "CoreIncludes.h"
-#include "ConsoleCommand.h"
-
-namespace orxonox
-{
-    /**
-        @brief Constructor: Registers the object in the Tickable-list
-    */
-    Tickable::Tickable()
-    {
-        RegisterRootObject(Tickable);
-    }
-
-    /**
-        @brief Constructor: Registers the object in the TickableReal-list
-    */
-    TickableReal::TickableReal()
-    {
-        RegisterRootObject(TickableReal);
-    }
-}
Index: code/branches/input/src/core/Tickable.h
===================================================================
--- code/branches/input/src/core/Tickable.h	(revision 1523)
+++ 	(revision )
@@ -1,80 +1,0 @@
-/*
- *   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 Tickable.h
-    @brief Definition 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 "CorePrereqs.h"
-
-#include "OrxonoxClass.h"
-
-namespace orxonox
-{
-    //! The Tickable interface provides a tick(dt) function, that gets called every frame.
-    class _CoreExport 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) = 0;
-
-        protected:
-            Tickable();
-    };
-
-    //! The Tickable interface provides a tick(dt) function, that gets called every frame.
-    class _CoreExport TickableReal : virtual public OrxonoxClass
-    {
-        public:
-            /**
-                @brief Gets called every frame.
-                @param dt The time since the last frame in seconds
-            */
-            virtual void tick(float dt) = 0;
-
-        protected:
-            TickableReal();
-    };
-
-}
-
-#endif /* _Tickable_H__ */
Index: code/branches/input/src/core/input/InputManager.cc
===================================================================
--- code/branches/input/src/core/input/InputManager.cc	(revision 1523)
+++ code/branches/input/src/core/input/InputManager.cc	(revision 1524)
@@ -499,5 +499,5 @@
     @param dt Delta time
   */
-  void InputManager::tick(float dt)
+  void InputManager::_tick(float dt)
   {
     if (state_ == IS_UNINIT)
@@ -649,5 +649,5 @@
       activeHandlers_[iHandler].first->tickInput(dt, activeHandlers_[iHandler].second);
   }
-
+    
   void InputManager::_completeCalibration()
   {
@@ -1141,4 +1141,9 @@
   }
 
+  void InputManager::tick(float dt)
+  {
+    _getSingleton()._tick(dt);
+  }
+
   // ###### KeyHandler ######
 
Index: code/branches/input/src/core/input/InputManager.h
===================================================================
--- code/branches/input/src/core/input/InputManager.h	(revision 1523)
+++ code/branches/input/src/core/input/InputManager.h	(revision 1524)
@@ -43,5 +43,5 @@
 #include "ois/OIS.h"
 #include "util/Math.h"
-#include "core/Tickable.h"
+#include "core/OrxonoxClass.h"
 #include "InputInterfaces.h"
 
@@ -89,5 +89,5 @@
   */
   class _CoreExport InputManager
-        : public TickableReal,
+        : public OrxonoxClass,
           public OIS::KeyListener, public OIS::MouseListener, public OIS::JoyStickListener
   {
@@ -143,4 +143,6 @@
     static void calibrate();
 
+    static void tick(float dt);
+
     static bool addKeyHandler                 (KeyHandler* handler, const std::string& name);
     static bool removeKeyHandler              (const std::string& name);
@@ -191,5 +193,5 @@
     unsigned int _getJoystick(const OIS::JoyStickEvent& arg);
 
-    void tick(float dt);
+    void _tick(float dt);
 
     // input events
Index: code/branches/input/src/network/Client.h
===================================================================
--- code/branches/input/src/network/Client.h	(revision 1523)
+++ code/branches/input/src/network/Client.h	(revision 1524)
@@ -46,5 +46,4 @@
 #include <string>
 
-#include "core/Tickable.h"
 #include "ClientConnection.h"
 #include "PacketManager.h"
@@ -63,5 +62,5 @@
   *
   */
-  class _NetworkExport Client : PacketDecoder, public orxonox::Tickable{
+  class _NetworkExport Client : PacketDecoder{
   public:
     
Index: code/branches/input/src/network/Server.h
===================================================================
--- code/branches/input/src/network/Server.h	(revision 1523)
+++ code/branches/input/src/network/Server.h	(revision 1524)
@@ -46,5 +46,4 @@
 #include <string>
 
-#include "core/Tickable.h"
 #include "PacketManager.h"
 
@@ -57,5 +56,5 @@
   * It implements all functions necessary for a Server
   */
-  class _NetworkExport Server : public PacketDecoder, public orxonox::Tickable{
+  class _NetworkExport Server : public PacketDecoder{
   public:
     Server();
Index: code/branches/input/src/orxonox/CMakeLists.txt
===================================================================
--- code/branches/input/src/orxonox/CMakeLists.txt	(revision 1523)
+++ code/branches/input/src/orxonox/CMakeLists.txt	(revision 1524)
@@ -29,4 +29,5 @@
   objects/SpaceShip.cc
   objects/SpaceShipAI.cc
+  objects/Tickable.cc
   objects/WorldEntity.cc
 
Index: code/branches/input/src/orxonox/Orxonox.cc
===================================================================
--- code/branches/input/src/orxonox/Orxonox.cc	(revision 1523)
+++ code/branches/input/src/orxonox/Orxonox.cc	(revision 1524)
@@ -57,7 +57,7 @@
 #include "core/Debug.h"
 #include "core/Loader.h"
-#include "core/Tickable.h"
 #include "core/input/InputManager.h"
 #include "core/TclBind.h"
+#include "core/Core.h"
 
 // audio
@@ -70,5 +70,5 @@
 // objects and tools
 #include "hud/HUD.h"
-#include <Ogre.h>
+#include "objects/Tickable.h"
 
 #include "GraphicsEngine.h"
@@ -76,6 +76,6 @@
 // FIXME: is this really file scope?
 // globals for the server or client
-network::Client *client_g;
-network::Server *server_g;
+network::Client *client_g = 0;
+network::Server *server_g = 0;
 
 namespace orxonox
@@ -430,4 +430,6 @@
       }
 
+      // tick the core
+      Core::tick((float)evt.timeSinceLastFrame);
       // Call those objects that need the real time
       for (Iterator<TickableReal> it = ObjectList<TickableReal>::start(); it; ++it)
@@ -436,4 +438,9 @@
       for (Iterator<Tickable> it = ObjectList<Tickable>::start(); it; ++it)
         it->tick((float)evt.timeSinceLastFrame * this->timefactor_);
+      //AudioManager::tick();
+      if (client_g)
+        client_g->tick((float)evt.timeSinceLastFrame);
+      if (server_g)
+        server_g->tick((float)evt.timeSinceLastFrame);
 
       // don't forget to call _fireFrameStarted in ogre to make sure
Index: code/branches/input/src/orxonox/OrxonoxStableHeaders.h
===================================================================
--- code/branches/input/src/orxonox/OrxonoxStableHeaders.h	(revision 1523)
+++ code/branches/input/src/orxonox/OrxonoxStableHeaders.h	(revision 1524)
@@ -104,5 +104,4 @@
 #include "core/Debug.h"
 //#include "core/Executor.h"
-#include "core/Tickable.h"
 //#include "core/XMLPort.h"
 
@@ -111,4 +110,5 @@
 #include "OrxonoxPrereqs.h"
 #include "tools/Timer.h"
+#include "objects/Tickable.h"
 #include "objects/Model.h"
 #include "objects/WorldEntity.h"
Index: code/branches/input/src/orxonox/console/InGameConsole.h
===================================================================
--- code/branches/input/src/orxonox/console/InGameConsole.h	(revision 1523)
+++ code/branches/input/src/orxonox/console/InGameConsole.h	(revision 1524)
@@ -36,6 +36,6 @@
 #include <OgreTextAreaOverlayElement.h>
 
-#include "core/Tickable.h"
 #include "core/Shell.h"
+#include "objects/Tickable.h"
 
 
Index: code/branches/input/src/orxonox/hud/HUD.h
===================================================================
--- code/branches/input/src/orxonox/hud/HUD.h	(revision 1523)
+++ code/branches/input/src/orxonox/hud/HUD.h	(revision 1524)
@@ -36,10 +36,10 @@
 #include <OgreTextAreaOverlayElement.h>
 #include <OgreSceneNode.h>
-#include "core/Tickable.h"
+#include "objects/Tickable.h"
 #include "util/Math.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport HUD : public Tickable
+    class _OrxonoxExport HUD : public TickableReal
     {
       private:
Index: code/branches/input/src/orxonox/hud/RadarOverlayElement.cc
===================================================================
--- code/branches/input/src/orxonox/hud/RadarOverlayElement.cc	(revision 1523)
+++ code/branches/input/src/orxonox/hud/RadarOverlayElement.cc	(revision 1524)
@@ -35,6 +35,6 @@
 
 #include "GraphicsEngine.h"
-#include "core/Tickable.h"
 #include "core/ConsoleCommand.h"
+#include "objects/Tickable.h"
 #include "objects/SpaceShip.h"
 #include "RadarObject.h"
Index: code/branches/input/src/orxonox/objects/Tickable.cc
===================================================================
--- code/branches/input/src/orxonox/objects/Tickable.cc	(revision 1524)
+++ code/branches/input/src/orxonox/objects/Tickable.cc	(revision 1524)
@@ -0,0 +1,51 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+#include "OrxonoxStableHeaders.h"
+#include "Tickable.h"
+#include "core/CoreIncludes.h"
+#include "core/ConsoleCommand.h"
+
+namespace orxonox
+{
+    /**
+        @brief Constructor: Registers the object in the Tickable-list
+    */
+    Tickable::Tickable()
+    {
+        RegisterRootObject(Tickable);
+    }
+
+    /**
+        @brief Constructor: Registers the object in the TickableReal-list
+    */
+    TickableReal::TickableReal()
+    {
+        RegisterRootObject(TickableReal);
+    }
+}
Index: code/branches/input/src/orxonox/objects/Tickable.h
===================================================================
--- code/branches/input/src/orxonox/objects/Tickable.h	(revision 1524)
+++ code/branches/input/src/orxonox/objects/Tickable.h	(revision 1524)
@@ -0,0 +1,80 @@
+/*
+ *   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 Tickable.h
+    @brief Definition 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 "OrxonoxPrereqs.h"
+
+#include "core/OrxonoxClass.h"
+
+namespace orxonox
+{
+    //! The Tickable interface provides a tick(dt) function, that gets called every frame.
+    class _OrxonoxExport 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) = 0;
+
+        protected:
+            Tickable();
+    };
+
+    //! The Tickable interface provides a tick(dt) function, that gets called every frame.
+    class _OrxonoxExport TickableReal : virtual public OrxonoxClass
+    {
+        public:
+            /**
+                @brief Gets called every frame.
+                @param dt The time since the last frame in seconds
+            */
+            virtual void tick(float dt) = 0;
+
+        protected:
+            TickableReal();
+    };
+
+}
+
+#endif /* _Tickable_H__ */
Index: code/branches/input/src/orxonox/objects/WorldEntity.h
===================================================================
--- code/branches/input/src/orxonox/objects/WorldEntity.h	(revision 1523)
+++ code/branches/input/src/orxonox/objects/WorldEntity.h	(revision 1524)
@@ -39,5 +39,5 @@
 #include "network/Synchronisable.h"
 #include "core/BaseObject.h"
-#include "core/Tickable.h"
+#include "Tickable.h"
 #include "../tools/Mesh.h"
 
Index: code/branches/input/src/orxonox/tools/Timer.h
===================================================================
--- code/branches/input/src/orxonox/tools/Timer.h	(revision 1523)
+++ code/branches/input/src/orxonox/tools/Timer.h	(revision 1524)
@@ -62,6 +62,5 @@
 
 #include "OrxonoxPrereqs.h"
-#include "core/CorePrereqs.h"
-#include "core/Tickable.h"
+#include "objects/Tickable.h"
 
 namespace orxonox
Index: code/branches/input/visual_studio/vc8/core.vcproj
===================================================================
--- code/branches/input/visual_studio/vc8/core.vcproj	(revision 1523)
+++ code/branches/input/visual_studio/vc8/core.vcproj	(revision 1524)
@@ -157,5 +157,5 @@
 			</File>
 			<File
-				RelativePath="..\..\src\core\CoreSettings.cc"
+				RelativePath="..\..\src\core\Core.cc"
 				>
 			</File>
@@ -186,8 +186,4 @@
 			<File
 				RelativePath="..\..\src\core\SignalHandler.cc"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\core\Tickable.cc"
 				>
 			</File>
@@ -351,12 +347,12 @@
 			</File>
 			<File
+				RelativePath="..\..\src\core\Core.h"
+				>
+			</File>
+			<File
 				RelativePath="..\..\src\core\CorePrereqs.h"
 				>
 			</File>
 			<File
-				RelativePath="..\..\src\core\CoreSettings.h"
-				>
-			</File>
-			<File
 				RelativePath="..\..\src\core\Debug.h"
 				>
@@ -392,8 +388,4 @@
 			<File
 				RelativePath="..\..\src\core\SignalHandler.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\core\Tickable.h"
 				>
 			</File>
Index: code/branches/input/visual_studio/vc8/orxonox.vcproj
===================================================================
--- code/branches/input/visual_studio/vc8/orxonox.vcproj	(revision 1523)
+++ code/branches/input/visual_studio/vc8/orxonox.vcproj	(revision 1524)
@@ -256,4 +256,8 @@
 				</File>
 				<File
+					RelativePath="..\..\src\orxonox\objects\Tickable.cc"
+					>
+				</File>
+				<File
 					RelativePath="..\..\src\orxonox\objects\WorldEntity.cc"
 					>
@@ -539,4 +543,8 @@
 				<File
 					RelativePath="..\..\src\orxonox\objects\SpaceShipAI.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\src\orxonox\objects\Tickable.h"
 					>
 				</File>
