Index: code/branches/physics/src/orxonox/objects/collisionshapes/CompoundCollisionShape.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/collisionshapes/CompoundCollisionShape.cc	(revision 2405)
+++ code/branches/physics/src/orxonox/objects/collisionshapes/CompoundCollisionShape.cc	(revision 2407)
@@ -72,5 +72,5 @@
     }
 
-    void CompoundCollisionShape::addChildShape(CollisionShape* shape)
+    void CompoundCollisionShape::addChildShape(CollisionShape* shape, bool bWorldEntityRoot)
     {
         if (!shape)
@@ -97,5 +97,6 @@
 
         // network synchro
-        shape->setParent(this, this->getObjectID());
+        if (!bWorldEntityRoot)
+            shape->setParent(this, this->getObjectID());
     }
 
Index: code/branches/physics/src/orxonox/objects/collisionshapes/CompoundCollisionShape.h
===================================================================
--- code/branches/physics/src/orxonox/objects/collisionshapes/CompoundCollisionShape.h	(revision 2405)
+++ code/branches/physics/src/orxonox/objects/collisionshapes/CompoundCollisionShape.h	(revision 2407)
@@ -45,5 +45,5 @@
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
 
-            void addChildShape(CollisionShape* shape);
+            void addChildShape(CollisionShape* shape, bool bWorldEntityRoot = false);
             CollisionShape* getChildShape(unsigned int index) const;
 
Index: code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.cc	(revision 2405)
+++ code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.cc	(revision 2407)
@@ -23,5 +23,5 @@
  *      Fabian 'x3n' Landau
  *   Co-authors:
- *      ...
+ *      Reto Grieder
  *
  */
@@ -256,8 +256,5 @@
     {
         if (!this->bControlled_)
-        {
-            //COUT(0) << "override with server position: " << this << std::endl;
             this->setPosition(this->server_position_);
-        }
     }
 
@@ -282,36 +279,32 @@
     void ControllableEntity::processOverwrite()
     {
-        //if (this->bControlled_)
-        //{
-        //    COUT(0) << "complete override: " << this << std::endl;
-        //    this->setPosition(this->server_position_);
-        //    this->setVelocity(this->server_velocity_);
-        //    this->setOrientation(this->server_orientation_);
-
-        //    this->client_overwrite_ = this->server_overwrite_;
-        //}
+        if (this->bControlled_)
+        {
+            this->setPosition(this->server_position_);
+            this->setOrientation(this->server_orientation_);
+            this->setVelocity(this->server_linear_velocity_);
+            this->setAngularVelocity(this->server_angular_velocity_);
+
+            this->client_overwrite_ = this->server_overwrite_;
+        }
     }
 
     void ControllableEntity::processClientPosition()
     {
-        //if (this->server_overwrite_ == this->client_overwrite_)
-        if (!this->bControlled_)
-        {
-            //COUT(0) << "override with client position: " << this << std::endl;
-//            COUT(2) << "callback: setting client position" << endl;
+        if (this->server_overwrite_ == this->client_overwrite_)
+        {
             this->setPosition(this->client_position_);
-            //this->server_position_ = this->client_position_;
-        }
-        //else
-        //  COUT(2) << "callback: not setting client position" << endl;
+            // The call above increments the overwrite. This is not desired to reduce traffic
+            --this->server_overwrite_;
+        }
     }
 
     void ControllableEntity::processClientLinearVelocity()
     {
-        if (!this->bControlled_)
-        //if (this->server_overwrite_ == this->client_overwrite_)
+        if (this->server_overwrite_ == this->client_overwrite_)
         {
             this->setVelocity(this->client_linear_velocity_);
-            //this->server_velocity_ = this->client_velocity_;
+            // The call above increments the overwrite. This is not desired to reduce traffic
+            --this->server_overwrite_;
         }
     }
@@ -319,9 +312,9 @@
     void ControllableEntity::processClientOrientation()
     {
-        if (!this->bControlled_)
-        //if (this->server_overwrite_ == this->client_overwrite_)
+        if (this->server_overwrite_ == this->client_overwrite_)
         {
             this->setOrientation(this->client_orientation_);
-            //this->server_orientation_ = this->client_orientation_;
+            // The call above increments the overwrite. This is not desired to reduce traffic
+            --this->server_overwrite_;
         }
     }
@@ -329,9 +322,9 @@
     void ControllableEntity::processClientAngularVelocity()
     {
-        if (!this->bControlled_)
-        //if (this->server_overwrite_ == this->client_overwrite_)
+        if (this->server_overwrite_ == this->client_overwrite_)
         {
             this->setAngularVelocity(this->client_angular_velocity_);
-            //this->server_velocity_ = this->client_velocity_;
+            // The call above increments the overwrite. This is not desired to reduce traffic
+            --this->server_overwrite_;
         }
     }
@@ -342,5 +335,6 @@
         {
             this->server_position_ = this->getPosition();
-            ++this->server_overwrite_;
+            if (!bContinuous)
+                ++this->server_overwrite_;
         }
         else if (this->bControlled_)
@@ -355,5 +349,6 @@
         {
             this->server_orientation_ = this->getOrientation();
-            ++this->server_overwrite_;
+            if (!bContinuous)
+                ++this->server_overwrite_;
         }
         else if (this->bControlled_)
@@ -368,5 +363,6 @@
         {
             this->server_linear_velocity_ = this->getVelocity();
-            ++this->server_overwrite_;
+            if (!bContinuous)
+                ++this->server_overwrite_;
         }
         else if (this->bControlled_)
@@ -381,5 +377,6 @@
         {
             this->server_angular_velocity_ = this->getAngularVelocity();
-            ++this->server_overwrite_;
+            if (!bContinuous)
+                ++this->server_overwrite_;
         }
         else if (this->bControlled_)
Index: code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.h	(revision 2405)
+++ code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.h	(revision 2407)
@@ -23,5 +23,5 @@
  *      Fabian 'x3n' Landau
  *   Co-authors:
- *      ...
+ *      Reto Grieder
  *
  */
Index: code/branches/physics/src/orxonox/objects/worldentities/LinearEntity.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/LinearEntity.cc	(revision 2405)
+++ code/branches/physics/src/orxonox/objects/worldentities/LinearEntity.cc	(revision 2407)
@@ -80,5 +80,4 @@
     void LinearEntity::overwritePosition()
     {
-        //COUT(0) << "Setting position on client: " << this->overwrite_position_ << std::endl;
         this->setPosition(this->overwrite_position_);
     }
@@ -86,5 +85,4 @@
     void LinearEntity::overwriteOrientation()
     {
-        //COUT(0) << "Setting orientation on client: " << this->overwrite_orientation_ << std::endl;
         this->setOrientation(this->overwrite_orientation_);
     }
@@ -109,9 +107,5 @@
     {
         if (!bContinuous)
-        {
-            //if (Core::isMaster())
-            //    COUT(0) << "Setting position on server: " << this->getPosition() << std::endl;
             this->overwrite_position_ = this->getPosition();
-        }
     }
 
@@ -119,9 +113,5 @@
     {
         if (!bContinuous)
-        {
-            //if (Core::isMaster())
-            //    COUT(0) << "Setting orientation on server: " << this->getOrientation() << std::endl;
             this->overwrite_orientation_ = this->getOrientation();
-        }
     }
 }
Index: code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.cc	(revision 2405)
+++ code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.cc	(revision 2407)
@@ -108,6 +108,4 @@
         if (this->isDynamic())
         {
-            //if (this->isPhysicsRunning())
-            //    return;
             btTransform transf = this->physicalBody_->getWorldTransform();
             transf.setOrigin(btVector3(position.x, position.y, position.z));
@@ -115,5 +113,4 @@
         }
 
-        //COUT(0) << "setting position: " << position << std::endl;
         this->node_->setPosition(position);
         positionChanged(false);
@@ -212,6 +209,4 @@
             OrxAssert(relativeTo == Ogre::Node::TS_LOCAL, "Cannot align physical object relative \
                                                           to any other space than TS_LOCAL.");
-            //btTransform transf = this->physicalBody_->getWorldTransform();
-            //this->physicalBody_->setWorldTransform(transf);
         }
 
@@ -227,6 +222,4 @@
             OrxAssert(relativeTo == Ogre::Node::TS_LOCAL, "Cannot align physical object relative \
                                                           to any other space than TS_LOCAL.");
-            //btTransform transf = this->physicalBody_->getWorldTransform();
-            //this->physicalBody_->setWorldTransform(transf);
         }
 
@@ -288,5 +281,4 @@
         this->node_->setPosition(Vector3(worldTrans.getOrigin().x(), worldTrans.getOrigin().y(), worldTrans.getOrigin().z()));
         this->node_->setOrientation(Quaternion(worldTrans.getRotation().w(), worldTrans.getRotation().x(), worldTrans.getRotation().y(), worldTrans.getRotation().z()));
-        COUT(0) << "setting world transform: " << omni_cast<std::string>(node_->getPosition()) << std::endl;
         this->linearVelocity_.x = this->physicalBody_->getLinearVelocity().x();
         this->linearVelocity_.y = this->physicalBody_->getLinearVelocity().y();
Index: code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.h	(revision 2405)
+++ code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.h	(revision 2407)
@@ -108,6 +108,6 @@
 
         private:
-            virtual void positionChanged       (bool bContinuous) { }
-            virtual void orientationChanged    (bool bContinuous) { }
+            virtual void positionChanged       (bool bContinuous) = 0;
+            virtual void orientationChanged    (bool bContinuous) = 0;
             virtual void linearVelocityChanged (bool bContinuous) { }
             virtual void angularVelocityChanged(bool bContinuous) { }
Index: code/branches/physics/src/orxonox/objects/worldentities/WorldEntity.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/WorldEntity.cc	(revision 2405)
+++ code/branches/physics/src/orxonox/objects/worldentities/WorldEntity.cc	(revision 2407)
@@ -44,6 +44,6 @@
 
 #include "objects/Scene.h"
-#include "objects/worldentities/collisionshapes/CollisionShape.h"
-#include "objects/worldentities/collisionshapes/CompoundCollisionShape.h"
+#include "objects/collisionshapes/CollisionShape.h"
+#include "objects/collisionshapes/CompoundCollisionShape.h"
 
 namespace orxonox
@@ -191,5 +191,5 @@
                 // static to static/kinematic/dynamic --> merge shapes
                 this->childMass_ += object->getMass();
-                this->attachCollisionShape(object->getCollisionShape());
+                this->attachCollisionShape(object->getCollisionShape(), true);
                 // Remove the btRigidBody from the child object.
                 // That also implies that cannot add a physics WE to the child afterwards.
@@ -237,7 +237,7 @@
     }
 
-    void WorldEntity::attachCollisionShape(CollisionShape* shape)
-    {
-        this->collisionShape_->addChildShape(shape);
+    void WorldEntity::attachCollisionShape(CollisionShape* shape, bool bWorldEntityRoot)
+    {
+        this->collisionShape_->addChildShape(shape, bWorldEntityRoot);
 
         if (this->physicalBody_)
Index: code/branches/physics/src/orxonox/objects/worldentities/WorldEntity.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/WorldEntity.h	(revision 2405)
+++ code/branches/physics/src/orxonox/objects/worldentities/WorldEntity.h	(revision 2407)
@@ -202,5 +202,5 @@
                 { return this->mass_; }
 
-            void attachCollisionShape(CollisionShape* shape);
+            void attachCollisionShape(CollisionShape* shape, bool bWorldEntityRoot = false);
             CollisionShape* getAttachedCollisionShape(unsigned int index) const;
 
