Index: code/trunk/src/modules/tetris/CMakeLists.txt
===================================================================
--- code/trunk/src/modules/tetris/CMakeLists.txt	(revision 10622)
+++ code/trunk/src/modules/tetris/CMakeLists.txt	(revision 10624)
@@ -8,5 +8,5 @@
 
 ORXONOX_ADD_LIBRARY(tetris
-  MODULE
+  PLUGIN
   FIND_HEADER_FILES
   LINK_LIBRARIES
Index: code/trunk/src/modules/tetris/Tetris.cc
===================================================================
--- code/trunk/src/modules/tetris/Tetris.cc	(revision 10622)
+++ code/trunk/src/modules/tetris/Tetris.cc	(revision 10624)
@@ -104,5 +104,5 @@
         }
 
-        for (std::list<SmartPtr<TetrisStone> >::iterator it = this->stones_.begin(); it != this->stones_.end(); ++it)
+        for (std::list<StrongPtr<TetrisStone> >::iterator it = this->stones_.begin(); it != this->stones_.end(); ++it)
             (*it)->destroy();
         this->stones_.clear();
@@ -136,5 +136,5 @@
             return false;
 
-        for(std::list<SmartPtr<TetrisStone> >::const_iterator it = this->stones_.begin(); it != this->stones_.end(); ++it)
+        for(std::list<StrongPtr<TetrisStone> >::const_iterator it = this->stones_.begin(); it != this->stones_.end(); ++it)
         {
             const Vector3& currentStonePosition = (*it)->getPosition(); //!< Saves the position of the currentStone
@@ -192,5 +192,5 @@
 
         // check for collisions with all stones
-        for(std::list<SmartPtr<TetrisStone> >::const_iterator it = this->stones_.begin(); it != this->stones_.end(); ++it)
+        for(std::list<StrongPtr<TetrisStone> >::const_iterator it = this->stones_.begin(); it != this->stones_.end(); ++it)
         {
             //Vector3 currentStonePosition = rotateVector((*it)->getPosition(), this->activeBrick_->getRotationCount());
@@ -469,7 +469,7 @@
         {
             stonesPerRow = 0;
-            for(std::list<SmartPtr<TetrisStone> >::iterator it = this->stones_.begin(); it != this->stones_.end(); )
-            {
-                std::list<SmartPtr<TetrisStone> >::iterator it_temp = it++;
+            for(std::list<StrongPtr<TetrisStone> >::iterator it = this->stones_.begin(); it != this->stones_.end(); )
+            {
+                std::list<StrongPtr<TetrisStone> >::iterator it_temp = it++;
                 correctPosition = static_cast<unsigned int>(((*it_temp)->getPosition().y - 5)/this->center_->getStoneSize());
                 if(correctPosition == row)
@@ -491,5 +491,5 @@
     void Tetris::clearRow(unsigned int row)
     {// clear the full row
-        for(std::list<SmartPtr<TetrisStone> >::iterator it = this->stones_.begin(); it != this->stones_.end(); )
+        for(std::list<StrongPtr<TetrisStone> >::iterator it = this->stones_.begin(); it != this->stones_.end(); )
         {
             if(static_cast<unsigned int>(((*it)->getPosition().y - 5)/this->center_->getStoneSize()) == row)
@@ -502,5 +502,5 @@
         }
       // adjust height of stones above the deleted row //TODO: check if this could be a source of a bug.
-        for(std::list<SmartPtr<TetrisStone> >::iterator it = this->stones_.begin(); it != this->stones_.end(); ++it)
+        for(std::list<StrongPtr<TetrisStone> >::iterator it = this->stones_.begin(); it != this->stones_.end(); ++it)
         {
             if(static_cast<unsigned int>(((*it)->getPosition().y - 5)/this->center_->getStoneSize()) > row)
Index: code/trunk/src/modules/tetris/Tetris.h
===================================================================
--- code/trunk/src/modules/tetris/Tetris.h	(revision 10622)
+++ code/trunk/src/modules/tetris/Tetris.h	(revision 10624)
@@ -69,5 +69,5 @@
 
             PlayerInfo* getPlayer(void) const; //!< Get the player.
-            WeakPtr<TetrisCenterpoint> getCenterpoint(void)
+            TetrisCenterpoint* getCenterpoint(void)
                 { return this->center_; }
 
@@ -93,5 +93,5 @@
 
             WeakPtr<TetrisCenterpoint> center_; //!< The playing field.
-            std::list<SmartPtr<TetrisStone> > stones_; //!< A list of all stones in play.
+            std::list<StrongPtr<TetrisStone> > stones_; //!< A list of all stones in play.
             WeakPtr<TetrisBrick> activeBrick_;
             WeakPtr<TetrisBrick> futureBrick_;
Index: code/trunk/src/modules/tetris/TetrisBrick.cc
===================================================================
--- code/trunk/src/modules/tetris/TetrisBrick.cc	(revision 10622)
+++ code/trunk/src/modules/tetris/TetrisBrick.cc	(revision 10624)
@@ -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/trunk/src/modules/tetris/TetrisCenterpoint.cc
===================================================================
--- code/trunk/src/modules/tetris/TetrisCenterpoint.cc	(revision 10622)
+++ code/trunk/src/modules/tetris/TetrisCenterpoint.cc	(revision 10624)
@@ -80,16 +80,4 @@
     /**
     @brief
-        Is called when the gametype has changed.
-    */
-    void TetrisCenterpoint::changedGametype()
-    {
-        SUPER(TetrisCenterpoint, changedGametype);
-
-        // Check, whether it's still Tetris.
-        this->checkGametype();
-    }
-
-    /**
-    @brief
         Checks whether the gametype is Tetris and if it is, sets its centerpoint.
     */
@@ -98,5 +86,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/trunk/src/modules/tetris/TetrisCenterpoint.h
===================================================================
--- code/trunk/src/modules/tetris/TetrisCenterpoint.h	(revision 10622)
+++ code/trunk/src/modules/tetris/TetrisCenterpoint.h	(revision 10624)
@@ -64,6 +64,4 @@
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method to create a TetrisCenterpoint through XML.
 
-            virtual void changedGametype(); //!< Is called when the gametype has changed.
-            
             /**
             @brief Set the width of the playing field.
Index: code/trunk/src/modules/tetris/TetrisScore.cc
===================================================================
--- code/trunk/src/modules/tetris/TetrisScore.cc	(revision 10622)
+++ code/trunk/src/modules/tetris/TetrisScore.cc	(revision 10624)
@@ -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;
