Index: /code/branches/core7/src/libraries/core/BaseObject.cc
===================================================================
--- /code/branches/core7/src/libraries/core/BaseObject.cc	(revision 10570)
+++ /code/branches/core7/src/libraries/core/BaseObject.cc	(revision 10571)
@@ -78,8 +78,8 @@
         {
             this->setFile(this->creator_->getFile());
-            this->setNamespace(this->creator_->getNamespace());
-            this->setScene(this->creator_->getScene(), this->creator_->getSceneID());
-            this->setGametype(this->creator_->getGametype());
-            this->setLevel(this->creator_->getLevel());
+            this->setNamespace(this->creator_->namespace_);
+            this->setScene(this->creator_->scene_, this->creator_->sceneID_);
+            this->setGametype(this->creator_->gametype_);
+            this->setLevel(this->creator_->level_);
         }
         else
Index: /code/branches/core7/src/libraries/core/BaseObject.h
===================================================================
--- /code/branches/core7/src/libraries/core/BaseObject.h	(revision 10570)
+++ /code/branches/core7/src/libraries/core/BaseObject.h	(revision 10571)
@@ -139,5 +139,5 @@
 
             inline void setNamespace(const StrongPtr<Namespace>& ns) { this->namespace_ = ns; }
-            inline const StrongPtr<Namespace>& getNamespace() const { return this->namespace_; }
+            inline Namespace* getNamespace() const { return this->namespace_; }
 
             inline void setCreator(BaseObject* creator) { this->creator_ = creator; }
@@ -145,5 +145,5 @@
 
             inline void setScene(const StrongPtr<Scene>& scene, uint32_t sceneID) { this->scene_ = scene; this->sceneID_=sceneID; }
-            inline const StrongPtr<Scene>& getScene() const { return this->scene_; }
+            inline Scene* getScene() const { return this->scene_; }
             inline virtual uint32_t getSceneID() const { return this->sceneID_; }
 
@@ -157,10 +157,10 @@
                 }
             }
-            inline const StrongPtr<Gametype>& getGametype() const { return this->gametype_; }
+            inline Gametype* getGametype() const { return this->gametype_; }
             inline Gametype* getOldGametype() const { return this->oldGametype_; }
             virtual void changedGametype() {}
 
             inline void setLevel(const StrongPtr<Level>& level) { this->level_ = level; }
-            inline const StrongPtr<Level>& getLevel() const { return this->level_; }
+            inline Level* getLevel() const { return this->level_; }
 
             void addEventSource(BaseObject* source, const std::string& state);
Index: /code/branches/core7/src/modules/dodgerace/DodgeRaceCenterPoint.cc
===================================================================
--- /code/branches/core7/src/modules/dodgerace/DodgeRaceCenterPoint.cc	(revision 10570)
+++ /code/branches/core7/src/modules/dodgerace/DodgeRaceCenterPoint.cc	(revision 10571)
@@ -66,5 +66,5 @@
         if (this->getGametype() != NULL && this->getGametype()->isA(Class(DodgeRace)))
         {
-            DodgeRace* DodgeRaceGametype = orxonox_cast<DodgeRace*>(this->getGametype().get());
+            DodgeRace* DodgeRaceGametype = orxonox_cast<DodgeRace*>(this->getGametype());
             DodgeRaceGametype->setCenterpoint(this);
         }
Index: /code/branches/core7/src/modules/dodgerace/DodgeRaceHUDinfo.cc
===================================================================
--- /code/branches/core7/src/modules/dodgerace/DodgeRaceHUDinfo.cc	(revision 10570)
+++ /code/branches/core7/src/modules/dodgerace/DodgeRaceHUDinfo.cc	(revision 10571)
@@ -82,5 +82,5 @@
         if (this->getOwner() && this->getOwner()->getGametype())
         {
-            this->DodgeRaceGame = orxonox_cast<DodgeRace*>(this->getOwner()->getGametype().get());
+            this->DodgeRaceGame = orxonox_cast<DodgeRace*>(this->getOwner()->getGametype());
         }
         else
Index: /code/branches/core7/src/modules/gametypes/OldRaceCheckPoint.cc
===================================================================
--- /code/branches/core7/src/modules/gametypes/OldRaceCheckPoint.cc	(revision 10570)
+++ /code/branches/core7/src/modules/gametypes/OldRaceCheckPoint.cc	(revision 10571)
@@ -61,5 +61,5 @@
         SUPER(OldRaceCheckPoint, tick, dt);
 
-        OldSpaceRace* gametype = orxonox_cast<OldSpaceRace*>(this->getGametype().get());
+        OldSpaceRace* gametype = orxonox_cast<OldSpaceRace*>(this->getGametype());
         assert(gametype);
         if (this->getCheckpointIndex() == gametype->getCheckpointsReached())
@@ -82,5 +82,5 @@
         DistanceTrigger::triggered(bIsTriggered);
 
-        OldSpaceRace* gametype = orxonox_cast<OldSpaceRace*>(this->getGametype().get());
+        OldSpaceRace* gametype = orxonox_cast<OldSpaceRace*>(this->getGametype());
         if (gametype && this->getCheckpointIndex() == gametype->getCheckpointsReached() && bIsTriggered)
         {
@@ -107,5 +107,5 @@
         if (this->bTimeLimit_ != 0)
         {
-            OldSpaceRace* gametype = orxonox_cast<OldSpaceRace*>(this->getGametype().get());
+            OldSpaceRace* gametype = orxonox_cast<OldSpaceRace*>(this->getGametype());
             if (gametype)
             {
Index: /code/branches/core7/src/modules/gametypes/SpaceRaceManager.cc
===================================================================
--- /code/branches/core7/src/modules/gametypes/SpaceRaceManager.cc	(revision 10570)
+++ /code/branches/core7/src/modules/gametypes/SpaceRaceManager.cc	(revision 10571)
@@ -46,5 +46,5 @@
     {
         RegisterObject(SpaceRaceManager);
-        this->race_ = orxonox_cast<SpaceRace*>(this->getGametype().get());
+        this->race_ = orxonox_cast<SpaceRace*>(this->getGametype());
         assert(race_);
         //amountOfPlayers=(race_->getPlayers()).size();
@@ -139,5 +139,5 @@
     void SpaceRaceManager::checkpointReached(RaceCheckPoint* newCheckpoint, PlayerInfo* player)
     {
-        SpaceRace* gametype = orxonox_cast<SpaceRace*>(this->getGametype().get());
+        SpaceRace* gametype = orxonox_cast<SpaceRace*>(this->getGametype());
         assert(gametype);
         if (!gametype)
Index: /code/branches/core7/src/modules/invader/InvaderCenterPoint.cc
===================================================================
--- /code/branches/core7/src/modules/invader/InvaderCenterPoint.cc	(revision 10570)
+++ /code/branches/core7/src/modules/invader/InvaderCenterPoint.cc	(revision 10571)
@@ -66,5 +66,5 @@
         if (this->getGametype() != NULL && this->getGametype()->isA(Class(Invader)))
         {
-            Invader* InvaderGametype = orxonox_cast<Invader*>(this->getGametype().get());
+            Invader* InvaderGametype = orxonox_cast<Invader*>(this->getGametype());
             InvaderGametype->setCenterpoint(this);
         }
Index: /code/branches/core7/src/modules/invader/InvaderHUDinfo.cc
===================================================================
--- /code/branches/core7/src/modules/invader/InvaderHUDinfo.cc	(revision 10570)
+++ /code/branches/core7/src/modules/invader/InvaderHUDinfo.cc	(revision 10571)
@@ -128,5 +128,5 @@
         if (this->getOwner() && this->getOwner()->getGametype())
         {
-            this->InvaderGame = orxonox_cast<Invader*>(this->getOwner()->getGametype().get());
+            this->InvaderGame = orxonox_cast<Invader*>(this->getOwner()->getGametype());
         }
         else
Index: /code/branches/core7/src/modules/jump/JumpCenterpoint.cc
===================================================================
--- /code/branches/core7/src/modules/jump/JumpCenterpoint.cc	(revision 10570)
+++ /code/branches/core7/src/modules/jump/JumpCenterpoint.cc	(revision 10571)
@@ -91,5 +91,5 @@
         if (getGametype() != NULL && this->getGametype()->isA(Class(Jump)))
         {
-            Jump* jumpGametype = orxonox_cast<Jump*>(this->getGametype().get());
+            Jump* jumpGametype = orxonox_cast<Jump*>(this->getGametype());
             jumpGametype->setCenterpoint(this);
         }
Index: /code/branches/core7/src/modules/jump/JumpScore.cc
===================================================================
--- /code/branches/core7/src/modules/jump/JumpScore.cc	(revision 10570)
+++ /code/branches/core7/src/modules/jump/JumpScore.cc	(revision 10571)
@@ -119,5 +119,5 @@
         if (this->getOwner() != NULL && this->getOwner()->getGametype())
         {
-            this->owner_ = orxonox_cast<Jump*>(this->getOwner()->getGametype().get());
+            this->owner_ = orxonox_cast<Jump*>(this->getOwner()->getGametype());
         }
         else
Index: /code/branches/core7/src/modules/mini4dgame/Mini4DgameBoard.cc
===================================================================
--- /code/branches/core7/src/modules/mini4dgame/Mini4DgameBoard.cc	(revision 10570)
+++ /code/branches/core7/src/modules/mini4dgame/Mini4DgameBoard.cc	(revision 10571)
@@ -919,5 +919,5 @@
         if (this->getGametype() != NULL && this->getGametype()->isA(Class(Mini4Dgame)))
         {
-            Mini4Dgame* Mini4DgameGametype = orxonox_cast<Mini4Dgame*>(this->getGametype().get());
+            Mini4Dgame* Mini4DgameGametype = orxonox_cast<Mini4Dgame*>(this->getGametype());
             Mini4DgameGametype->setGameboard(this);
         }
Index: /code/branches/core7/src/modules/objects/triggers/CheckPoint.cc
===================================================================
--- /code/branches/core7/src/modules/objects/triggers/CheckPoint.cc	(revision 10570)
+++ /code/branches/core7/src/modules/objects/triggers/CheckPoint.cc	(revision 10571)
@@ -93,5 +93,5 @@
         DistanceTrigger::triggered(bIsTriggered);
 
-        Asteroids* gametype = orxonox_cast<Asteroids*>(this->getGametype().get());
+        Asteroids* gametype = orxonox_cast<Asteroids*>(this->getGametype());
         if (gametype)
         {
Index: /code/branches/core7/src/modules/overlays/hud/LastManStandingInfos.cc
===================================================================
--- /code/branches/core7/src/modules/overlays/hud/LastManStandingInfos.cc	(revision 10570)
+++ /code/branches/core7/src/modules/overlays/hud/LastManStandingInfos.cc	(revision 10571)
@@ -87,5 +87,5 @@
         {
             this->player_ = orxonox_cast<PlayerInfo*>(this->getOwner());
-            this->lms_ = orxonox_cast<LastManStanding*>(this->getOwner()->getGametype().get());
+            this->lms_ = orxonox_cast<LastManStanding*>(this->getOwner()->getGametype());
         }
         else
Index: /code/branches/core7/src/modules/overlays/hud/LastTeamStandingInfos.cc
===================================================================
--- /code/branches/core7/src/modules/overlays/hud/LastTeamStandingInfos.cc	(revision 10570)
+++ /code/branches/core7/src/modules/overlays/hud/LastTeamStandingInfos.cc	(revision 10571)
@@ -87,5 +87,5 @@
         {
             this->player_ = orxonox_cast<PlayerInfo*>(this->getOwner());
-            this->lts_ = orxonox_cast<LastTeamStanding*>(this->getOwner()->getGametype().get());
+            this->lts_ = orxonox_cast<LastTeamStanding*>(this->getOwner()->getGametype());
         }
         else
Index: /code/branches/core7/src/modules/overlays/hud/TeamBaseMatchScore.cc
===================================================================
--- /code/branches/core7/src/modules/overlays/hud/TeamBaseMatchScore.cc	(revision 10570)
+++ /code/branches/core7/src/modules/overlays/hud/TeamBaseMatchScore.cc	(revision 10571)
@@ -118,5 +118,5 @@
 
         if (this->getOwner() && this->getOwner()->getGametype())
-            this->owner_ = orxonox_cast<TeamBaseMatch*>(this->getOwner()->getGametype().get());
+            this->owner_ = orxonox_cast<TeamBaseMatch*>(this->getOwner()->getGametype());
         else
             this->owner_ = 0;
Index: /code/branches/core7/src/modules/pong/PongCenterpoint.cc
===================================================================
--- /code/branches/core7/src/modules/pong/PongCenterpoint.cc	(revision 10570)
+++ /code/branches/core7/src/modules/pong/PongCenterpoint.cc	(revision 10571)
@@ -98,5 +98,5 @@
         if (this->getGametype() != NULL && this->getGametype()->isA(Class(Pong)))
         {
-            Pong* pongGametype = orxonox_cast<Pong*>(this->getGametype().get());
+            Pong* pongGametype = orxonox_cast<Pong*>(this->getGametype());
             pongGametype->setCenterpoint(this);
         }
Index: /code/branches/core7/src/modules/pong/PongScore.cc
===================================================================
--- /code/branches/core7/src/modules/pong/PongScore.cc	(revision 10570)
+++ /code/branches/core7/src/modules/pong/PongScore.cc	(revision 10571)
@@ -170,5 +170,5 @@
 
         if (this->getOwner() != NULL && this->getOwner()->getGametype())
-            this->owner_ = orxonox_cast<Pong*>(this->getOwner()->getGametype().get());
+            this->owner_ = orxonox_cast<Pong*>(this->getOwner()->getGametype());
         else
             this->owner_ = 0;
Index: /code/branches/core7/src/modules/tetris/TetrisBrick.cc
===================================================================
--- /code/branches/core7/src/modules/tetris/TetrisBrick.cc	(revision 10570)
+++ /code/branches/core7/src/modules/tetris/TetrisBrick.cc	(revision 10571)
@@ -169,5 +169,5 @@
         if (this->getGametype() != NULL && this->getGametype()->isA(Class(Tetris)))
         {
-            Tetris* tetrisGametype = orxonox_cast<Tetris*>(this->getGametype().get());
+            Tetris* tetrisGametype = orxonox_cast<Tetris*>(this->getGametype());
             return tetrisGametype;
         }
Index: /code/branches/core7/src/modules/tetris/TetrisCenterpoint.cc
===================================================================
--- /code/branches/core7/src/modules/tetris/TetrisCenterpoint.cc	(revision 10570)
+++ /code/branches/core7/src/modules/tetris/TetrisCenterpoint.cc	(revision 10571)
@@ -98,5 +98,5 @@
         if (this->getGametype() != NULL && this->getGametype()->isA(Class(Tetris)))
         {
-            Tetris* tetrisGametype = orxonox_cast<Tetris*>(this->getGametype().get());
+            Tetris* tetrisGametype = orxonox_cast<Tetris*>(this->getGametype());
             tetrisGametype->setCenterpoint(this);
         }
Index: /code/branches/core7/src/modules/tetris/TetrisScore.cc
===================================================================
--- /code/branches/core7/src/modules/tetris/TetrisScore.cc	(revision 10570)
+++ /code/branches/core7/src/modules/tetris/TetrisScore.cc	(revision 10571)
@@ -118,5 +118,5 @@
 
         if (this->getOwner() != NULL && this->getOwner()->getGametype())
-            this->owner_ = orxonox_cast<Tetris*>(this->getOwner()->getGametype().get());
+            this->owner_ = orxonox_cast<Tetris*>(this->getOwner()->getGametype());
         else
             this->owner_ = 0;
Index: /code/branches/core7/src/modules/towerdefense/TowerDefenseCenterpoint.cc
===================================================================
--- /code/branches/core7/src/modules/towerdefense/TowerDefenseCenterpoint.cc	(revision 10570)
+++ /code/branches/core7/src/modules/towerdefense/TowerDefenseCenterpoint.cc	(revision 10571)
@@ -103,5 +103,5 @@
         {
             // Sets the centerpoint of the gametype. The gametype uses this to later spawn in towers, he needs the tower template stored in the center point
-            TowerDefense* towerDefenseGametype = orxonox_cast<TowerDefense*>(this->getGametype().get());
+            TowerDefense* towerDefenseGametype = orxonox_cast<TowerDefense*>(this->getGametype());
             towerDefenseGametype->setCenterpoint(this);
         }
Index: /code/branches/core7/src/modules/towerdefense/TowerDefenseEnemy.cc
===================================================================
--- /code/branches/core7/src/modules/towerdefense/TowerDefenseEnemy.cc	(revision 10570)
+++ /code/branches/core7/src/modules/towerdefense/TowerDefenseEnemy.cc	(revision 10571)
@@ -29,5 +29,5 @@
         this->setCollisionType(WorldEntity::Dynamic);
         //needed to keep track of the PlayerStats coded in TowerDefense.h
-        this->td = orxonox_cast<TowerDefense*>(this->getGametype().get());
+        this->td = orxonox_cast<TowerDefense*>(this->getGametype());
         once_=false;
 
Index: /code/branches/core7/src/modules/towerdefense/TowerDefenseHUDController.cc
===================================================================
--- /code/branches/core7/src/modules/towerdefense/TowerDefenseHUDController.cc	(revision 10570)
+++ /code/branches/core7/src/modules/towerdefense/TowerDefenseHUDController.cc	(revision 10571)
@@ -80,5 +80,5 @@
             if (this->getOwner() && this->getOwner()->getGametype())
                     {
-                        this->td = orxonox_cast<TowerDefense*>(this->getOwner()->getGametype().get());
+                        this->td = orxonox_cast<TowerDefense*>(this->getOwner()->getGametype());
                     }
                     else
Index: /code/branches/core7/src/orxonox/Scene.cc
===================================================================
--- /code/branches/core7/src/orxonox/Scene.cc	(revision 10570)
+++ /code/branches/core7/src/orxonox/Scene.cc	(revision 10571)
@@ -63,4 +63,5 @@
 
         this->setScene(StrongPtr<Scene>(this, false), this->getObjectID());
+
         this->bShadows_ = true;
         this->bDebugDrawPhysics_ = false;
Index: /code/branches/core7/src/orxonox/overlays/OverlayGroup.cc
===================================================================
--- /code/branches/core7/src/orxonox/overlays/OverlayGroup.cc	(revision 10570)
+++ /code/branches/core7/src/orxonox/overlays/OverlayGroup.cc	(revision 10571)
@@ -38,4 +38,5 @@
 #include "core/command/ConsoleCommandIncludes.h"
 #include "OrxonoxOverlay.h"
+#include "gametypes/Gametype.h"
 
 namespace orxonox
Index: /code/branches/core7/src/orxonox/worldentities/pawns/Destroyer.cc
===================================================================
--- /code/branches/core7/src/orxonox/worldentities/pawns/Destroyer.cc	(revision 10570)
+++ /code/branches/core7/src/orxonox/worldentities/pawns/Destroyer.cc	(revision 10571)
@@ -40,5 +40,5 @@
         RegisterObject(Destroyer);
 
-        UnderAttack* gametype = orxonox_cast<UnderAttack*>(this->getGametype().get());
+        UnderAttack* gametype = orxonox_cast<UnderAttack*>(this->getGametype());
         if (gametype)
         {
Index: /code/branches/core7/src/orxonox/worldentities/pawns/TeamBaseMatchBase.cc
===================================================================
--- /code/branches/core7/src/orxonox/worldentities/pawns/TeamBaseMatchBase.cc	(revision 10570)
+++ /code/branches/core7/src/orxonox/worldentities/pawns/TeamBaseMatchBase.cc	(revision 10571)
@@ -45,5 +45,5 @@
         this->state_ = BaseState::Uncontrolled;
 
-        TeamBaseMatch* gametype = orxonox_cast<TeamBaseMatch*>(this->getGametype().get());
+        TeamBaseMatch* gametype = orxonox_cast<TeamBaseMatch*>(this->getGametype());
         if (gametype)
         {
@@ -58,5 +58,5 @@
         this->fireEvent();
 
-        TeamDeathmatch* gametype = orxonox_cast<TeamDeathmatch*>(this->getGametype().get());
+        TeamDeathmatch* gametype = orxonox_cast<TeamDeathmatch*>(this->getGametype());
         if (!gametype)
             return;
