Index: code/branches/objecthierarchy/src/CMakeLists.txt
===================================================================
--- code/branches/objecthierarchy/src/CMakeLists.txt	(revision 457)
+++ code/branches/objecthierarchy/src/CMakeLists.txt	(revision 460)
@@ -14,4 +14,5 @@
 	orxonox/core/SignalHandler.cc
 	orxonox/objects/BaseObject.cc
+	orxonox/objects/WorldEntity.cc
 	orxonox/objects/test1.cc
 	orxonox/objects/test2.cc
@@ -35,4 +36,5 @@
 	orxonox/core/SignalHandler.h
 	orxonox/objects/BaseObject.h
+	orxonox/objects/WorldEntity.h
 	orxonox/objects/Test.h
 	orxonox/objects/test1.h
Index: code/branches/objecthierarchy/src/orxonox/core/CoreIncludes.h
===================================================================
--- code/branches/objecthierarchy/src/orxonox/core/CoreIncludes.h	(revision 457)
+++ code/branches/objecthierarchy/src/orxonox/core/CoreIncludes.h	(revision 460)
@@ -22,4 +22,6 @@
 #include "OgreVector3.h"
 #include "OgreColourValue.h"
+#include "OgreQuaternion.h"
+#include "OgreMatrix3.h"
 
 
@@ -30,4 +32,8 @@
     typedef Ogre::Vector3 Vector3;
     typedef Ogre::ColourValue ColourValue;
+    typedef Ogre::Radian Radian;
+    typedef Ogre::Real Real;
+    typedef Ogre::Quaternion Quaternion;
+    typedef Ogre::Matrix3 Matrix3;
 }
 
Index: code/branches/objecthierarchy/src/orxonox/core/OrxonoxClass.h
===================================================================
--- code/branches/objecthierarchy/src/orxonox/core/OrxonoxClass.h	(revision 457)
+++ code/branches/objecthierarchy/src/orxonox/core/OrxonoxClass.h	(revision 460)
@@ -103,5 +103,5 @@
 
             /** @brief Sets the name of the object. @param name The name */
-            inline void setName(const std::string& name) { this->name_ = name; }
+            inline virtual void setName(const std::string& name) { this->name_ = name; }
 
             /** @returns the name of the object. */
@@ -109,5 +109,5 @@
 
             /** @brief Sets the state of the objects activity. @param bActive True = active */
-            inline void setActive(bool bActive) { this->bActive_ = bActive; }
+            inline virtual void setActive(bool bActive) { this->bActive_ = bActive; }
 
             /** @returns the state of the objects activity. */
@@ -115,5 +115,5 @@
 
             /** @brief Sets the state of the objects visibility. @param bVisible True = visible */
-            inline void setVisible(bool bVisible) { this->bVisible_ = bVisible; }
+            inline virtual void setVisible(bool bVisible) { this->bVisible_ = bVisible; }
 
             /** @returns the state of the objects visibility. */
Index: code/branches/objecthierarchy/src/orxonox/objects/WorldEntity.cc
===================================================================
--- code/branches/objecthierarchy/src/orxonox/objects/WorldEntity.cc	(revision 460)
+++ code/branches/objecthierarchy/src/orxonox/objects/WorldEntity.cc	(revision 460)
@@ -0,0 +1,45 @@
+#include <string>
+#include <sstream>
+
+#include "WorldEntity.h"
+#include "../core/CoreIncludes.h"
+
+namespace orxonox
+{
+    CreateFactory(WorldEntity);
+
+    Ogre::SceneManager* WorldEntity::sceneManager_s = 0;
+    unsigned int WorldEntity::worldEntityCounter_s = 0;
+    int WorldEntity::num_s = 0;
+
+    WorldEntity::WorldEntity()
+    {
+        RegisterObject(WorldEntity);
+
+        if (WorldEntity::sceneManager_s)
+            WorldEntity::sceneManager_s->setAmbientLight( ColourValue( 1, 1, 1 ) ); // remove this
+
+        if (WorldEntity::sceneManager_s)
+        {
+            std::ostringstream name;
+            name << (WorldEntity::worldEntityCounter_s++);
+            this->setName("WorldEntity" + name.str());
+            node_ = WorldEntity::sceneManager_s->getRootSceneNode()->createChildSceneNode(this->getName());
+        }
+
+        this->bStatic_ = false;
+        this->velocity_ = Vector3(0, 0, 0);
+    }
+
+    WorldEntity::~WorldEntity()
+    {
+    }
+
+    void WorldEntity::tick(float dt)
+    {
+        if (!this->bStatic_)
+        {
+            this->translate(this->velocity_);
+        }
+    }
+}
Index: code/branches/objecthierarchy/src/orxonox/objects/WorldEntity.h
===================================================================
--- code/branches/objecthierarchy/src/orxonox/objects/WorldEntity.h	(revision 460)
+++ code/branches/objecthierarchy/src/orxonox/objects/WorldEntity.h	(revision 460)
@@ -0,0 +1,74 @@
+#ifndef _WorldEntity_H__
+#define _WorldEntity_H__
+
+#include "BaseObject.h"
+#include "Tickable.h"
+#include "../core/CoreIncludes.h"
+#include "OgreSceneManager.h"
+#include "OgreSceneNode.h"
+
+namespace orxonox
+{
+    class WorldEntity : public BaseObject, public Tickable
+    {
+        public:
+            WorldEntity();
+            ~WorldEntity();
+
+            void tick(float dt);
+
+            inline Ogre::SceneNode* getNode()
+                { return this->node_; }
+
+            inline void setPosition(const Vector3& pos)
+                { this->node_->setPosition(pos); }
+            inline void setPosition(Real x, Real y, Real z)
+                { this->node_->setPosition(x, y, z); }
+            inline const Vector3& getPosition() const
+                { return this->node_->getPosition(); }
+
+            inline void translate(const Vector3 &d, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_PARENT)
+                { this->node_->translate(d, relativeTo); }
+            inline void translate(Real x, Real y, Real z, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_PARENT)
+                { this->node_->translate(x, y, z, relativeTo); }
+            inline void translate(const Matrix3 &axes, const Vector3 &move, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_PARENT)
+                { this->node_->translate(axes, move, relativeTo); }
+            inline void translate(const Matrix3 &axes, Real x, Real y, Real z, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_PARENT)
+                { this->node_->translate(axes, x, y, z, relativeTo); }
+
+            inline void yaw(const Radian &angle, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL)
+                { this->node_->yaw(angle, relativeTo); }
+            inline void pitch(const Radian &angle, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL)
+                { this->node_->pitch(angle, relativeTo); }
+            inline void roll(const Radian &angle, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL)
+                { this->node_->roll(angle, relativeTo); }
+
+            inline void rotate(const Vector3 &axis, const Radian &angle, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL)
+                { this->node_->rotate(axis, angle, relativeTo); }
+            inline void setDirection(Real x, Real y, Real z, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL, const Vector3 &localDirectionVector=Vector3::NEGATIVE_UNIT_Z)
+                { this->node_->setDirection(x, y, z, relativeTo, localDirectionVector); }
+            inline void setDirection(const Vector3 &vec, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL, const Vector3 &localDirectionVector=Vector3::NEGATIVE_UNIT_Z)
+                { this->node_->setDirection(vec, relativeTo, localDirectionVector); }
+            inline void lookAt(const Vector3 &targetPoint, Ogre::Node::TransformSpace relativeTo, const Vector3 &localDirectionVector=Vector3::NEGATIVE_UNIT_Z)
+                { this->node_->lookAt(targetPoint, relativeTo, localDirectionVector); }
+
+            inline void attachObject(Ogre::MovableObject *obj)
+                { this->node_->attachObject(obj); }
+            inline void detachObject(Ogre::MovableObject *obj)
+                { this->node_->detachObject(obj); }
+            inline void detachAllObjects()
+                { this->node_->detachAllObjects(); }
+
+            static Ogre::SceneManager* sceneManager_s;
+            static int num_s;
+
+        private:
+            Ogre::SceneNode* node_;
+            static unsigned int worldEntityCounter_s;
+
+            bool bStatic_;
+            Vector3 velocity_;
+    };
+}
+
+#endif
Index: code/branches/objecthierarchy/src/orxonox/orxonox.cc
===================================================================
--- code/branches/objecthierarchy/src/orxonox/orxonox.cc	(revision 457)
+++ code/branches/objecthierarchy/src/orxonox/orxonox.cc	(revision 460)
@@ -31,5 +31,13 @@
  */
 
-#include <Ogre.h>
+#include <OgreSceneNode.h>
+#include <OgreSceneManager.h>
+#include <OgreRoot.h>
+#include <OgreFrameListener.h>
+#include <OgreConfigFile.h>
+#include <OgreTextureManager.h>
+#include <OgreEntity.h>
+#include <OgreRenderWindow.h>
+
 #include <OIS/OIS.h>
 #include <CEGUI/CEGUI.h>
@@ -46,4 +54,5 @@
 #include "objects/Tickable.h"
 #include "objects/Timer.h"
+#include "objects/WorldEntity.h"
 
 #include "objects/BaseObject.h"
@@ -633,4 +642,15 @@
         std::cout << "4\n";
 
+        std::cout << "Test 12\n";
+        std::cout << "1\n";
+
+        WorldEntity* test12_1 = new WorldEntity;
+
+        std::cout << sizeof(WorldEntity) << std::endl;
+
+        std::cout << "2\n";
+
+
+
         startRenderLoop();
       }
@@ -721,6 +741,6 @@
       void setupScene()
       {
-        Ogre::SceneManager *mgr = mRoot->createSceneManager(Ogre::ST_GENERIC, "Default SceneManager");
-        Ogre::Camera *cam = mgr->createCamera("Camera");
+        WorldEntity::sceneManager_s = mRoot->createSceneManager(Ogre::ST_GENERIC, "Default SceneManager");
+        Ogre::Camera *cam = WorldEntity::sceneManager_s->createCamera("Camera");
         Ogre::Viewport *vp = mRoot->getAutoCreatedWindow()->addViewport(cam);
       }
