Index: code/branches/OrxoBlox_FS19/src/modules/OrxoBlox/OrxoBlox.cc
===================================================================
--- code/branches/OrxoBlox_FS19/src/modules/OrxoBlox/OrxoBlox.cc	(revision 12345)
+++ code/branches/OrxoBlox_FS19/src/modules/OrxoBlox/OrxoBlox.cc	(revision 12346)
@@ -147,5 +147,5 @@
 
             // Create the first Wall.
-            this->LevelUp();
+            this->createWall();
 
             //Create Ship
@@ -213,9 +213,10 @@
         this->createWall();
         this->activeWalls_.push_back(this->futureWall_);
+        for (int i = 0; i < this->futureWall_->getNumberOfStones(); i++)
+            this->stones_.push_back(this->futureWall_->getStone(i));
         //new location of ship
         //new amount of balls
         //create balls
         //insert new wall
-
     }
 
@@ -243,5 +244,22 @@
     }
 
-    
+    OrxoBloxStones* OrxoBlox::CheckForCollision(OrxoBloxBall* Ball) {
+
+        orxout() << "Checking for Collision" << endl;
+        Vector3 BallPosition = Ball->getPosition();
+        for(OrxoBloxStones* someStone : this->stones_)
+        {
+            orxout() << "Checking a stone" << endl;
+            const Vector3& StonePosition = someStone->getPosition(); //!< Saves the position of the currentStone
+            int size = someStone->getSize();
+            if((BallPosition.x >= StonePosition.x - size && BallPosition.x <= StonePosition.x + size) || 
+                (BallPosition.z >= StonePosition.z - size && BallPosition.z <= StonePosition.z + size)) {
+                orxout() << "FOUND ONE" << endl;
+                return someStone;
+            }
+        }
+        orxout() << "Found nothing...." << endl;
+        return nullptr;
+    }
     
 }
Index: code/branches/OrxoBlox_FS19/src/modules/OrxoBlox/OrxoBlox.h
===================================================================
--- code/branches/OrxoBlox_FS19/src/modules/OrxoBlox/OrxoBlox.h	(revision 12345)
+++ code/branches/OrxoBlox_FS19/src/modules/OrxoBlox/OrxoBlox.h	(revision 12346)
@@ -87,4 +87,5 @@
             OrxoBloxCenterpoint* getCenterpoint(void)
                 { return this->center_; }
+            OrxoBloxStones* CheckForCollision(OrxoBloxBall* Ball);
 
         protected:
Index: code/branches/OrxoBlox_FS19/src/modules/OrxoBlox/OrxoBloxBall.cc
===================================================================
--- code/branches/OrxoBlox_FS19/src/modules/OrxoBlox/OrxoBloxBall.cc	(revision 12345)
+++ code/branches/OrxoBlox_FS19/src/modules/OrxoBlox/OrxoBloxBall.cc	(revision 12346)
@@ -55,5 +55,5 @@
     */
     OrxoBloxBall::OrxoBloxBall(Context* context)
-        : MovableEntity(context)
+        : Pawn(context)
     {
         RegisterObject(OrxoBloxBall);
@@ -63,4 +63,5 @@
         this->bDeleteBats_ = false;
         this->relMercyOffset_ = 0.05f;
+        this->orxoblox_ = this->getOrxoBlox();
 
         this->registerVariables();
@@ -206,4 +207,7 @@
         if (position != this->getPosition())
             this->setPosition(position);
+        this->Collides((this->orxoblox_->CheckForCollision(this)));
+
+ 
     }
 
@@ -287,9 +291,9 @@
 
 
-    void OrxoBloxBall::Bounce(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) {
+    void OrxoBloxBall::Bounce(OrxoBloxStones* otherObject) {
 
         Vector3 velocity = this->getVelocity();
-        Vector3 myPosition = otherObject->getPosition();
-        btVector3 positionOtherObject = contactPoint.getPositionWorldOnA();
+        Vector3 positionOtherObject = otherObject->getPosition();
+        Vector3 myPosition = this->getPosition();
         orxout() << "About to Bounce >D" << endl;
         //if (positionOtherObject.y < 0) {
@@ -298,6 +302,6 @@
         //else {
         
-            int distance_X = positionOtherObject.getX() - myPosition.x;
-            int distance_Z = positionOtherObject.getZ() - myPosition.z;
+            int distance_X = myPosition.x - positionOtherObject.x;
+            int distance_Z = myPosition.z - positionOtherObject.z;
 
             if (distance_X < 0)
@@ -325,14 +329,26 @@
             }
             this->setVelocity(velocity);
-        //}
-    }
-
-
-    bool OrxoBloxBall::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint)
-    {
+    }
+
+
+    void OrxoBloxBall::Collides(OrxoBloxStones* otherObject)
+    {
+
+        if(otherObject == nullptr)
+            return;
+
         orxout() << "About to Bounce >D" << endl;
-        bool result = MovableEntity::collidesAgainst(otherObject, ownCollisionShape, contactPoint);
-        Bounce(otherObject, ownCollisionShape, contactPoint);
-        return result;
+        Bounce(otherObject);
+    }
+
+    OrxoBlox* OrxoBloxBall::getOrxoBlox()
+    {
+        if (this->getGametype() != nullptr && this->getGametype()->isA(Class(OrxoBlox)))
+        {
+            OrxoBlox* orxobloxGametype = orxonox_cast<OrxoBlox*>(this->getGametype());
+            return orxobloxGametype;
+        }
+        else orxout()<<"There is no Gametype for OrxoBlox! ask Anna"<< endl;
+        return nullptr;
     }
 
Index: code/branches/OrxoBlox_FS19/src/modules/OrxoBlox/OrxoBloxBall.h
===================================================================
--- code/branches/OrxoBlox_FS19/src/modules/OrxoBlox/OrxoBloxBall.h	(revision 12345)
+++ code/branches/OrxoBlox_FS19/src/modules/OrxoBlox/OrxoBloxBall.h	(revision 12346)
@@ -40,5 +40,5 @@
 #include "util/Math.h"
 
-#include "worldentities/MovableEntity.h"
+#include "worldentities/pawns/Pawn.h"
 #include <bullet/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h>
 
@@ -58,5 +58,5 @@
     @ingroup OrxoBlox
     */
-    class _OrxoBloxExport OrxoBloxBall : public MovableEntity
+    class _OrxoBloxExport OrxoBloxBall : public Pawn
     {
         public:
@@ -123,7 +123,6 @@
 
 
-            void Bounce(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint);
-            
-            virtual bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) override;
+            void Bounce(OrxoBloxStones* otherObject);
+            void Collides(OrxoBloxStones* otherObject);
 
             static const float MAX_REL_Z_VELOCITY;
@@ -139,4 +138,5 @@
             void registerVariables();
 
+            OrxoBlox* getOrxoBlox();
             float fieldWidth_; //!< The width of the playing field.
             float fieldHeight_; //!< The height of the playing field.
@@ -150,4 +150,5 @@
             WorldSound* defBatSound_;
             WorldSound* defBoundarySound_;
+            OrxoBlox* orxoblox_;
     };
 }
Index: code/branches/OrxoBlox_FS19/src/modules/OrxoBlox/OrxoBloxWall.cc
===================================================================
--- code/branches/OrxoBlox_FS19/src/modules/OrxoBlox/OrxoBloxWall.cc	(revision 12345)
+++ code/branches/OrxoBlox_FS19/src/modules/OrxoBlox/OrxoBloxWall.cc	(revision 12346)
@@ -89,3 +89,7 @@
         return nullptr;
     }
+
+    int OrxoBloxWall::getNumberOfStones() {
+        return num_Stones_;
+    }
 }
Index: code/branches/OrxoBlox_FS19/src/modules/OrxoBlox/OrxoBloxWall.h
===================================================================
--- code/branches/OrxoBlox_FS19/src/modules/OrxoBlox/OrxoBloxWall.h	(revision 12345)
+++ code/branches/OrxoBlox_FS19/src/modules/OrxoBlox/OrxoBloxWall.h	(revision 12346)
@@ -42,4 +42,5 @@
             void setGame(OrxoBlox* orxoblox)
                 { assert(orxoblox); orxoblox_ = orxoblox; }
+            int getNumberOfStones();
         private:
             void createWall(void);
