Index: sandbox_qt/src/libraries/util/CMakeLists.txt
===================================================================
--- sandbox_qt/src/libraries/util/CMakeLists.txt	(revision 7419)
+++ sandbox_qt/src/libraries/util/CMakeLists.txt	(revision 7421)
@@ -19,41 +19,19 @@
 
 SET_SOURCE_FILES(UTIL_SRC_FILES
-  Clock.cc
   Exception.cc
-  ExprParser.cc
   Math.cc
-  MultiType.cc
-  Scope.cc
   StringUtils.cc
 COMPILATION_BEGIN StableCompilation.cc
-  Clipboard.cc
   Convert.cc
-  CRC32.cc
   OutputHandler.cc
-  ScopedSingletonManager.cc
-  SharedPtr.cc
-  SignalHandler.cc
   Sleep.cc
-  SmallObjectAllocator.cc
   SubString.cc
 COMPILATION_END
 )
 
-IF(GCC_NO_SYSTEM_HEADER_SUPPORT)
-  # Get around displaying a few hundred lines of warning code
-  SET_SOURCE_FILES_PROPERTIES(MultiType.cc PROPERTIES COMPILE_FLAGS "-w")
-ENDIF()
-IF(MSVC)
-  # Simply using #pragma warning(disable:4244) doesn't really disable it
-  # if the warning occurs in a template in another file
-  # Hence promote it manually to a higher warning level (4)
-  SET_SOURCE_FILES_PROPERTIES(MultiType.cc PROPERTIES COMPILE_FLAGS "-w44244")
-ENDIF()
-
 ORXONOX_ADD_LIBRARY(util
   FIND_HEADER_FILES
   LINK_LIBRARIES
-    ${CEGUI_LIBRARY}
-    ${OGRE_LIBRARY}
+    ${QT_QTCORE_LIBRARY}
   SOURCE_FILES
     ${UTIL_SRC_FILES}
Index: sandbox_qt/src/libraries/util/Exception.cc
===================================================================
--- sandbox_qt/src/libraries/util/Exception.cc	(revision 7419)
+++ sandbox_qt/src/libraries/util/Exception.cc	(revision 7421)
@@ -35,5 +35,4 @@
 #include "Exception.h"
 
-#include <CEGUIExceptions.h>
 #include "Debug.h"
 
@@ -99,13 +98,4 @@
             return ex.what();
         }
-        catch (const CEGUI::Exception& ex)
-        {
-#if CEGUI_VERSION_MAJOR == 0 && CEGUI_VERSION_MINOR < 6
-            return GeneralException(ex.getMessage().c_str()).getDescription();
-#else
-            return GeneralException(ex.getMessage().c_str(), ex.getLine(),
-                ex.getFileName().c_str(), ex.getName().c_str()).getDescription();
-#endif
-        }
         catch (...)
         {
Index: sandbox_qt/src/libraries/util/Math.cc
===================================================================
--- sandbox_qt/src/libraries/util/Math.cc	(revision 7419)
+++ sandbox_qt/src/libraries/util/Math.cc	(revision 7421)
@@ -34,190 +34,6 @@
 #include "Math.h"
 
-#include <OgrePlane.h>
-
-#include "MathConvert.h"
-#include "SubString.h"
-// Do not remove this include, it avoids linker errors.
-#include "mbool.h"
-
 namespace orxonox
 {
-#if OGRE_VERSION < 0x010603
-    /**
-        @brief Function for writing a Radian to a stream.
-    */
-    std::ostream& operator<<(std::ostream& out, const orxonox::Radian& radian)
-    {
-        out << radian.valueRadians();
-        return out;
-    }
-
-    /**
-        @brief Function for writing a Degree to a stream.
-    */
-    std::ostream& operator<<(std::ostream& out, const orxonox::Degree& degree)
-    {
-        out << degree.valueDegrees();
-        return out;
-    }
-#endif
-
-    /**
-        @brief Function for reading a Radian from a stream.
-    */
-    std::istream& operator>>(std::istream& in, orxonox::Radian& radian)
-    {
-        float temp;
-        in >> temp;
-        radian = temp;
-        return in;
-    }
-
-    /**
-        @brief Function for reading a Degree from a stream.
-    */
-    std::istream& operator>>(std::istream& in, orxonox::Degree& degree)
-    {
-        float temp;
-        in >> temp;
-        degree = temp;
-        return in;
-    }
-
-
-    /**
-        @brief Gets the angle between my viewing direction and the direction to the position of the other object.
-        @param myposition My position
-        @param mydirection My viewing direction
-        @param otherposition The position of the other object
-        @return The angle in radian
-
-        Examples:
-         - If the other object is exactly in front of me, the function returns 0.
-         - If the other object is exactly behind me, the function returns pi.
-         - If the other object is exactly right/left to me (or above/below), the function returns pi/2.
-    */
-    float getAngle(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& otherposition)
-    {
-        orxonox::Vector3 distance = otherposition - myposition;
-        float distancelength = distance.length();
-        if (distancelength == 0)
-            return 0;
-        else
-            return acos(clamp<float>(mydirection.dotProduct(distance) / distancelength, -1, 1));
-    }
-
-    /**
-        @brief Gets the 2D viewing direction (up/down, left/right) to the position of the other object.
-        @param myposition My position
-        @param mydirection My viewing direction
-        @param myorthonormal My orthonormalvector (pointing upwards through my head)
-        @param otherposition The position of the other object
-        @return The viewing direction
-
-        Examples:
-         - If the other object is exactly in front of me, the function returns <tt>Vector2(0, 0)</tt>.
-         - If the other object is exactly at my left, the function returns <tt>Vector2(-1, 0)</tt>.
-         - If the other object is exactly at my right, the function returns <tt>Vector2(1, 0)</tt>.
-         - If the other object is only a bit at my right, the function still returns <tt>Vector2(1, 0)</tt>.
-         - If the other object is exactly above me, the function returns <tt>Vector2(0, 1)</tt>.
-    */
-    orxonox::Vector2 get2DViewdirection(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& otherposition)
-    {
-        orxonox::Vector3 distance = otherposition - myposition;
-
-        // project difference vector on our plane
-        orxonox::Vector3 projection = Ogre::Plane(mydirection, myposition).projectVector(distance);
-
-        float projectionlength = projection.length();
-        if (projectionlength == 0)
-        {
-            if (myposition.dotProduct(otherposition) >= 0)
-                return orxonox::Vector2(0, 0);
-            else
-                return orxonox::Vector2(0, 1);
-        }
-
-        float cos_value = clamp<float>(myorthonormal.dotProduct(projection) / projectionlength, -1, 1);
-        float sin_value = sqrt( 1 - cos_value*cos_value );
-
-        if ((mydirection.crossProduct(myorthonormal)).dotProduct(distance) > 0)
-            return orxonox::Vector2( sin_value, cos_value );
-        else
-            return orxonox::Vector2( -sin_value, cos_value );
-    }
-
-    /**
-        @brief Gets the 2D viewing direction (up/down, left/right) to the position of the other object, multiplied with the viewing distance to the object (0° = 0, 180° = 1).
-        @param myposition My position
-        @param mydirection My viewing direction
-        @param myorthonormal My orthonormalvector (pointing upwards through my head)
-        @param otherposition The position of the other object
-        @return The viewing direction
-
-        Examples:
-         - If the other object is exactly in front of me, the function returns <tt>Vector2(0, 0)</tt>.
-         - If the other object is exactly at my left, the function returns <tt>Vector2(-0.5, 0)</tt>.
-         - If the other object is exactly at my right, the function returns <tt>Vector2(0.5, 0)</tt>.
-         - If the other object is only a bit at my right, the function still returns <tt>Vector2(0.01, 0)</tt>.
-         - If the other object is exactly above me, the function returns <tt>Vector2(0, 0.5)</tt>.
-    */
-    orxonox::Vector2 get2DViewcoordinates(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& otherposition)
-    {
-        orxonox::Vector3 distance = otherposition - myposition;
-
-        // project difference vector on our plane
-        orxonox::Vector3 projection = Ogre::Plane(mydirection, myposition).projectVector(distance);
-
-        float projectionlength = projection.length();
-        if (projectionlength == 0)
-        {
-            if (myposition.dotProduct(otherposition) >= 0)
-                return orxonox::Vector2(0, 0);
-            else
-                return orxonox::Vector2(0, 1);
-        }
-        //float angle = acos(clamp<float>(myorthonormal.dotProduct(projection) / projectionlength, -1, 1));
-
-        float cos_value = clamp<float>(myorthonormal.dotProduct(projection) / projectionlength, -1, 1);
-        float sin_value = sqrt( 1 - cos_value*cos_value );
-
-        float distancelength = distance.length();
-        if (distancelength == 0) return orxonox::Vector2(0, 0);
-        float radius = acos(clamp<float>(mydirection.dotProduct(distance) / distancelength, -1, 1)) / math::pi;
-
-        if ((mydirection.crossProduct(myorthonormal)).dotProduct(distance) > 0)
-            return orxonox::Vector2( sin_value * radius, cos_value * radius);
-        else
-            return orxonox::Vector2( -sin_value * radius, cos_value * radius);
-    }
-
-    /**
-        @brief Returns the predicted position I have to aim at, if I want to hit a moving target with a moving projectile.
-        @param myposition My position
-        @param projectilespeed The speed of my projectile
-        @param targetposition The position of my target
-        @param targetvelocity The velocity of my target
-        @return The predicted position
-
-        The function predicts the position based on a linear velocity of the target. If the target changes speed or direction, the projectile will miss.
-    */
-    orxonox::Vector3 getPredictedPosition(const orxonox::Vector3& myposition, float projectilespeed, const orxonox::Vector3& targetposition, const orxonox::Vector3& targetvelocity)
-    {
-        float squaredProjectilespeed = projectilespeed * projectilespeed;
-        orxonox::Vector3 distance = targetposition - myposition;
-        float a = distance.squaredLength();
-        float b = 2 * (distance.x + distance.y + distance.z) * (targetvelocity.x + targetvelocity.y + targetvelocity.z);
-        float c = targetvelocity.squaredLength();
-
-        float temp = 4*squaredProjectilespeed*c + a*a - 4*b*c;
-        if (temp < 0)
-            return orxonox::Vector3::ZERO;
-
-        temp = sqrt(temp);
-        float time = (temp + a) / (2 * (squaredProjectilespeed - b));
-        return (targetposition + targetvelocity * time);
-    }
-
     /**
         @brief Returns a unique number. This function will never return the same value twice.
@@ -228,140 +44,3 @@
         return aNumber++;
     }
-
-
-    //////////////////////////
-    // Conversion functions //
-    //////////////////////////
-
-    // std::string to Vector2
-    bool ConverterFallback<std::string, orxonox::Vector2>::convert(orxonox::Vector2* output, const std::string& input)
-    {
-        size_t opening_parenthesis, closing_parenthesis = input.find('}');
-        if ((opening_parenthesis = input.find('{')) == std::string::npos)
-            opening_parenthesis = 0;
-        else
-            opening_parenthesis++;
-
-        SubString tokens(input.substr(opening_parenthesis, closing_parenthesis - opening_parenthesis),
-                         ",", SubString::WhiteSpaces, false, '\\', true, '"', true, '\0', '\0', true, '\0');
-        if (tokens.size() >= 2)
-        {
-            if (!convertValue(&(output->x), tokens[0]))
-                return false;
-            if (!convertValue(&(output->y), tokens[1]))
-                return false;
-
-            return true;
-        }
-        return false;
-    }
-
-    // std::string to Vector3
-    bool ConverterFallback<std::string, orxonox::Vector3>::convert(orxonox::Vector3* output, const std::string& input)
-    {
-        size_t opening_parenthesis, closing_parenthesis = input.find('}');
-        if ((opening_parenthesis = input.find('{')) == std::string::npos)
-            opening_parenthesis = 0;
-        else
-            opening_parenthesis++;
-
-        SubString tokens(input.substr(opening_parenthesis, closing_parenthesis - opening_parenthesis),
-                         ",", SubString::WhiteSpaces, false, '\\', true, '"', true, '\0', '\0', true, '\0');
-        if (tokens.size() >= 3)
-        {
-            if (!convertValue(&(output->x), tokens[0]))
-                return false;
-            if (!convertValue(&(output->y), tokens[1]))
-                return false;
-            if (!convertValue(&(output->z), tokens[2]))
-                return false;
-
-            return true;
-        }
-        return false;
-    }
-
-    // std::string to Vector4
-    bool ConverterFallback<std::string, orxonox::Vector4>::convert(orxonox::Vector4* output, const std::string& input)
-    {
-        size_t opening_parenthesis, closing_parenthesis = input.find('}');
-        if ((opening_parenthesis = input.find('{')) == std::string::npos)
-            opening_parenthesis = 0;
-        else
-            opening_parenthesis++;
-
-        SubString tokens(input.substr(opening_parenthesis, closing_parenthesis - opening_parenthesis),
-                         ",", SubString::WhiteSpaces, false, '\\', true, '"', true, '\0', '\0', true, '\0');
-        if (tokens.size() >= 4)
-        {
-            if (!convertValue(&(output->x), tokens[0]))
-                return false;
-            if (!convertValue(&(output->y), tokens[1]))
-                return false;
-            if (!convertValue(&(output->z), tokens[2]))
-                return false;
-            if (!convertValue(&(output->w), tokens[3]))
-                return false;
-
-            return true;
-        }
-        return false;
-    }
-
-    // std::string to Quaternion
-    bool ConverterFallback<std::string, orxonox::Quaternion>::convert(orxonox::Quaternion* output, const std::string& input)
-    {
-        size_t opening_parenthesis, closing_parenthesis = input.find('}');
-        if ((opening_parenthesis = input.find('{')) == std::string::npos)
-            opening_parenthesis = 0;
-        else
-            opening_parenthesis++;
-
-        SubString tokens(input.substr(opening_parenthesis, closing_parenthesis - opening_parenthesis), ",", SubString::WhiteSpaces, false, '\\', true, '"', true, '\0', '\0', true, '\0');
-        if (tokens.size() >= 4)
-        {
-            if (!convertValue(&(output->w), tokens[0]))
-                return false;
-            if (!convertValue(&(output->x), tokens[1]))
-                return false;
-            if (!convertValue(&(output->y), tokens[2]))
-                return false;
-            if (!convertValue(&(output->z), tokens[3]))
-                return false;
-
-            return true;
-        }
-        return false;
-    }
-
-    // std::string to ColourValue
-    bool ConverterFallback<std::string, orxonox::ColourValue>::convert(orxonox::ColourValue* output, const std::string& input)
-    {
-        size_t opening_parenthesis, closing_parenthesis = input.find('}');
-        if ((opening_parenthesis = input.find('{')) == std::string::npos)
-            opening_parenthesis = 0;
-        else
-            opening_parenthesis++;
-
-        SubString tokens(input.substr(opening_parenthesis, closing_parenthesis - opening_parenthesis), ",", SubString::WhiteSpaces, false, '\\', true, '"', true, '\0', '\0', true, '\0');
-        if (tokens.size() >= 3)
-        {
-            if (!convertValue(&(output->r), tokens[0]))
-                return false;
-            if (!convertValue(&(output->g), tokens[1]))
-                return false;
-            if (!convertValue(&(output->b), tokens[2]))
-                return false;
-            if (tokens.size() >= 4)
-            {
-                if (!convertValue(&(output->a), tokens[3]))
-                    return false;
-            }
-            else
-                output->a = 1.0;
-
-            return true;
-        }
-        return false;
-    }
 }
Index: sandbox_qt/src/libraries/util/Math.h
===================================================================
--- sandbox_qt/src/libraries/util/Math.h	(revision 7419)
+++ sandbox_qt/src/libraries/util/Math.h	(revision 7421)
@@ -35,5 +35,5 @@
     @file
     @ingroup Math
-    @brief Declaration and implementation of several math-functions, typedefs of some Ogre::Math classes to the orxonox namespace.
+    @brief Declaration and implementation of several math-functions.
 */
 
@@ -45,11 +45,4 @@
 #include <string>
 #include <cmath>
-
-#include <OgreMath.h>
-#include <OgreVector2.h>
-#include <OgreVector3.h>
-#include <OgreVector4.h>
-#include <OgreQuaternion.h>
-#include <OgreColourValue.h>
 
 // Certain headers might define unwanted macros...
@@ -83,16 +76,4 @@
     }
 
-#if OGRE_VERSION < 0x010603
-    _UtilExport std::ostream& operator<<(std::ostream& out, const orxonox::Radian& radian);
-    _UtilExport std::ostream& operator<<(std::ostream& out, const orxonox::Degree& degree);
-#endif
-    _UtilExport std::istream& operator>>(std::istream& in, orxonox::Radian& radian);
-    _UtilExport std::istream& operator>>(std::istream& in, orxonox::Degree& degree);
-
-    _UtilExport float getAngle(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& otherposition);
-    _UtilExport orxonox::Vector2 get2DViewdirection(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& otherposition);
-    _UtilExport orxonox::Vector2 get2DViewcoordinates(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& otherposition);
-    _UtilExport orxonox::Vector3 getPredictedPosition(const orxonox::Vector3& myposition, float projectilespeed, const orxonox::Vector3& targetposition, const orxonox::Vector3& targetvelocity);
-
     /**
         @brief Returns the sign of the given value.
@@ -177,61 +158,4 @@
             return ((x % max) + max);
     }
-
-    /**
-        @brief Returns a "zero" value for the given type.
-        @note This is the default template of the zeroise() function. The template is spezialized for each supported type.
-
-        The exact return value of the function depends on the type. For @c int this is 0,
-        for @c float it's 0.0f. For a @c std::string the function returns "" and for
-        @c Vector3 you get <tt>Vector3(0, 0, 0)</tt>.
-    */
-    template <typename T>
-    inline T zeroise()
-    {
-        // Default, raise a compiler error without including large boost header cascade.
-        T temp();
-        *********temp; // If you reach this code, you abused zeroise()!
-        return temp;
-    }
-
-    template <> inline char                 zeroise<char>()                 { return 0; }
-    template <> inline unsigned char        zeroise<unsigned char>()        { return 0; }
-    template <> inline short                zeroise<short>()                { return 0; }
-    template <> inline unsigned short       zeroise<unsigned short>()       { return 0; }
-    template <> inline int                  zeroise<int>()                  { return 0; }
-    template <> inline unsigned int         zeroise<unsigned int>()         { return 0; }
-    template <> inline long                 zeroise<long>()                 { return 0; }
-    template <> inline unsigned long        zeroise<unsigned long>()        { return 0; }
-    template <> inline long long            zeroise<long long>()            { return 0; }
-    template <> inline unsigned long long   zeroise<unsigned long long>()   { return 0; }
-    template <> inline float                zeroise<float>()                { return 0; }
-    template <> inline double               zeroise<double>()               { return 0; }
-    template <> inline long double          zeroise<long double>()          { return 0; }
-    template <> inline bool                 zeroise<bool>()                 { return 0; }
-    template <> inline void*                zeroise<void*>()                { return 0; }
-    template <> inline std::string          zeroise<std::string>()          { return std::string(); }
-    template <> inline orxonox::Radian      zeroise<orxonox::Radian>()      { return orxonox::Radian(0.0f); }
-    template <> inline orxonox::Degree      zeroise<orxonox::Degree>()      { return orxonox::Degree(0.0f); }
-    template <> inline orxonox::Vector2     zeroise<orxonox::Vector2>()     { return orxonox::Vector2    (0, 0)      ; }
-    template <> inline orxonox::Vector3     zeroise<orxonox::Vector3>()     { return orxonox::Vector3    (0, 0, 0)   ; }
-    template <> inline orxonox::Vector4     zeroise<orxonox::Vector4>()     { return orxonox::Vector4    (0, 0, 0, 0); }
-    template <> inline orxonox::ColourValue zeroise<orxonox::ColourValue>() { return orxonox::ColourValue(0, 0, 0, 0); }
-    template <> inline orxonox::Quaternion  zeroise<orxonox::Quaternion>()  { return orxonox::Quaternion (0, 0, 0, 0); }
-
-    /**
-        @brief Provides zero value symbols that can be returned as reference
-        @see zeroise()
-    */
-    template <typename T>
-    struct NilValue
-    {
-        inline operator const T&() const
-        {
-            return value;
-        }
-        static T value;
-    };
-    template <typename T>
-    T NilValue<T>::value = zeroise<T>();
 
     /**
@@ -297,29 +221,4 @@
 
     _UtilExport unsigned long getUniqueNumber();
-
-    /**
-        @brief A Vector class containing two integers @a x and @a y.
-    */
-    class IntVector2
-    {
-    public:
-        IntVector2() : x(0), y(0) { }
-        IntVector2(int _x, int _y) : x(_x), y(_y) { }
-        int x;
-        int y;
-    };
-
-    /**
-        @brief A Vector class containing three integers @a x, @a y, and @a z.
-    */
-    class IntVector3
-    {
-    public:
-        IntVector3() : x(0), y(0), z(0) { }
-        IntVector3(int _x, int _y, int _z) : x(_x), y(_y), z(_z) { }
-        int x;
-        int y;
-        int z;
-    };
 }
 
Index: sandbox_qt/src/libraries/util/Singleton.h
===================================================================
--- sandbox_qt/src/libraries/util/Singleton.h	(revision 7419)
+++ sandbox_qt/src/libraries/util/Singleton.h	(revision 7421)
@@ -145,11 +145,11 @@
 
         //! Update method called by ClassSingletonManager (if used)
-        void preUpdateSingleton(const Clock& time) { static_cast<T*>(T::singletonPtr_s)->preUpdate(time); }
+        void preUpdateSingleton() { static_cast<T*>(T::singletonPtr_s)->preUpdate(); }
         //! Empty update method for the static polymorphism
-        void preUpdate(const Clock& time) { }
+        void preUpdate() { }
         //! Update method called by ClassSingletonManager (if used)
-        void postUpdateSingleton(const Clock& time) { static_cast<T*>(T::singletonPtr_s)->postUpdate(time); }
+        void postUpdateSingleton() { static_cast<T*>(T::singletonPtr_s)->postUpdate(); }
         //! Empty update method for the static polymorphism
-        void postUpdate(const Clock& time) { }
+        void postUpdate() { }
 
     protected:
Index: sandbox_qt/src/libraries/util/StringUtils.cc
===================================================================
--- sandbox_qt/src/libraries/util/StringUtils.cc	(revision 7419)
+++ sandbox_qt/src/libraries/util/StringUtils.cc	(revision 7421)
@@ -35,5 +35,7 @@
 
 #include <cctype>
-#include <boost/scoped_array.hpp>
+#include <QVarLengthArray>
+#include <QDir>
+
 #include "Convert.h"
 #include "Math.h"
@@ -493,5 +495,5 @@
         size_t cols = str1.size() + 1;
         size_t rows = str2.size() + 1;
-        boost::scoped_array<int> matrix(new int[rows * cols]);
+        QVarLengthArray<int> matrix(rows * cols);
 
         for (size_t r = 0; r < rows; ++r)
@@ -516,3 +518,24 @@
         return matrix[(rows-1)*cols + cols-1];
     }
+
+    QDir& operator/=(QDir& lhs, const QDir& rhs)
+    {
+        lhs.setPath(lhs.path() + QDir::separator() + rhs.path());
+        return lhs;
+    }
+
+    QDir& operator/=(QDir& lhs, const QString& rhs)
+    {
+        return operator/=(lhs, QDir(rhs));
+    }
+
+    QDir operator/(const QDir& lhs, const QDir& rhs)
+    {
+        return (QDir(lhs) /= rhs);
+    }
+
+    QDir operator/(const QDir& lhs, const QString& rhs)
+    {
+        return operator/(lhs, QDir(rhs));
+    }
 }
Index: sandbox_qt/src/libraries/util/UtilPrereqs.h
===================================================================
--- sandbox_qt/src/libraries/util/UtilPrereqs.h	(revision 7419)
+++ sandbox_qt/src/libraries/util/UtilPrereqs.h	(revision 7421)
@@ -59,21 +59,4 @@
 
 //-----------------------------------------------------------------------
-// Enums
-//-----------------------------------------------------------------------
-
-namespace orxonox
-{
-    namespace ScopeID
-    {
-        //!A list of available scopes for the Scope template.
-        enum Value
-        {
-            Root,
-            Graphics
-        };
-    }
-}
-
-//-----------------------------------------------------------------------
 // Forward declarations
 //-----------------------------------------------------------------------
@@ -81,46 +64,10 @@
 namespace orxonox
 {
-    class Clock;
     class Exception;
-    class ExprParser;
-    class IntVector2;
-    class IntVector3;
-    class MultiType;
     class OutputHandler;
     class OutputListener;
-    template <ScopeID::Value>
-    class Scope;
-    template <class, ScopeID::Value>
-    class ScopedSingleton;
-    class ScopeListener;
-    class SignalHandler;
     template <class T>
     class Singleton;
     class SubString;
-}
-
-namespace Ogre
-{
-    class Radian;
-    class Degree;
-    class Vector2;
-    class Vector3;
-    class Vector4;
-    class Matrix3;
-    class Matrix4;
-    class Quaternion;
-    class ColourValue;
-}
-namespace orxonox
-{
-    using Ogre::Radian;
-    using Ogre::Degree;
-    using Ogre::Vector2;
-    using Ogre::Vector3;
-    using Ogre::Vector4;
-    using Ogre::Matrix3;
-    using Ogre::Matrix4;
-    using Ogre::Quaternion;
-    using Ogre::ColourValue;
 }
 
@@ -131,4 +78,7 @@
 }
 
+class QDir;
+class QString;
+
 // Just so you don't have to include StringUtils.h everywhere just for this
 namespace orxonox
@@ -137,4 +87,15 @@
 }
 
+//-----------------------------------------------------------------------
+// Functions (implementations in StringUtils.cc)
+//-----------------------------------------------------------------------
+
+namespace orxonox
+{
+    _UtilExport QDir& operator/=(QDir& lhs, const QDir& rhs);
+    _UtilExport QDir& operator/=(QDir& lhs, const QString& rhs);
+    _UtilExport QDir operator/(const QDir& lhs, const QDir& rhs);
+    _UtilExport QDir operator/(const QDir& lhs, const QString& rhs);
+}
 
 #endif /* _UtilPrereqs_H__ */
