Index: branches/current_cd/src/lib/collision_detection/bv_tree.h
===================================================================
--- branches/current_cd/src/lib/collision_detection/bv_tree.h	(revision 6909)
+++ branches/current_cd/src/lib/collision_detection/bv_tree.h	(revision 6911)
@@ -44,5 +44,5 @@
     virtual void flushTree() = 0;
 
-    virtual void collideWith(const WorldEntity& entity1, const WorldEntity& entity2) const = 0;
+    virtual void collideWith(WorldEntity* entity1, WorldEntity* entity2) = 0;
 
     virtual void drawBV(int depth, int drawMode) const = 0;
Index: branches/current_cd/src/lib/collision_detection/bv_tree_node.h
===================================================================
--- branches/current_cd/src/lib/collision_detection/bv_tree_node.h	(revision 6909)
+++ branches/current_cd/src/lib/collision_detection/bv_tree_node.h	(revision 6911)
@@ -35,5 +35,5 @@
 
   virtual void spawnBVTree(const modelInfo& modInfo, const int* triangleIndexes, int length) = 0;
-  virtual void collideWith(const BVTreeNode& treeNode, const WorldEntity& nodeA, const WorldEntity& nodeB) const = 0;
+  virtual void collideWith(const BVTreeNode& treeNode, WorldEntity* nodeA, WorldEntity* nodeB) = 0;
   virtual void drawBV(int depth, int drawMode, const Vector& color = Vector(1,0,0), bool top = true) const = 0;
 
Index: branches/current_cd/src/lib/collision_detection/cd_engine.cc
===================================================================
--- branches/current_cd/src/lib/collision_detection/cd_engine.cc	(revision 6909)
+++ branches/current_cd/src/lib/collision_detection/cd_engine.cc	(revision 6911)
@@ -108,5 +108,5 @@
 void CDEngine::checkCollisions(std::list<WorldEntity*>& list1, std::list<WorldEntity*>& list2)
 {
-  const BVTree* tree;
+  BVTree* tree;
   std::list<WorldEntity*>::iterator entity1, entity2, pre1, pre2;
   PRINTF(5)("checking for collisions\n");
@@ -126,5 +126,6 @@
           PRINTF(4)("checking object %s against %s\n", (*entity1)->getName(), (*entity2)->getName());
           tree = (*entity1)->getOBBTree();
-          if( likely(tree != NULL) && (*entity2)->getOBBTree() != NULL) tree->collideWith(*entity1, *entity2);
+          if( likely(tree != NULL) && (*entity2)->getOBBTree() != NULL)
+            tree->collideWith(*entity1, *entity2);
         }
       }
Index: branches/current_cd/src/lib/collision_detection/obb_tree.cc
===================================================================
--- branches/current_cd/src/lib/collision_detection/obb_tree.cc	(revision 6909)
+++ branches/current_cd/src/lib/collision_detection/obb_tree.cc	(revision 6911)
@@ -31,10 +31,10 @@
  *  standard constructor
 */
-OBBTree::OBBTree(int depth, const modelInfo& modelInf)
+OBBTree::OBBTree(int depth, const modelInfo* modelInf)
   : BVTree()
 {
   this->depth = depth;
   this->init();
-  this->spawnBVTree(modelInf);
+  this->spawnBVTree(*modelInf);
 }
 
@@ -92,8 +92,8 @@
  * @param nodeB: Pnode of object B
  */
-void OBBTree::collideWith(const WorldEntity& entity1, const WorldEntity& entity2) const
+void OBBTree::collideWith(WorldEntity* entity1, WorldEntity* entity2)
 {
-  if( likely(entity2.getOBBTree() != NULL) )
-    this->rootNode->collideWith(*(((OBBTree*)entity2.getOBBTree())->getRootNode()), entity1, entity2);
+  if( likely(entity2->getOBBTree() != NULL) )
+    this->rootNode->collideWith(*(((OBBTree*)entity2->getOBBTree())->getRootNode()), entity1, entity2);
 }
 
Index: branches/current_cd/src/lib/collision_detection/obb_tree.h
===================================================================
--- branches/current_cd/src/lib/collision_detection/obb_tree.h	(revision 6909)
+++ branches/current_cd/src/lib/collision_detection/obb_tree.h	(revision 6911)
@@ -21,5 +21,5 @@
 
   public:
-    OBBTree(int depth, const modelInfo& modInfo);
+    OBBTree(int depth, const modelInfo* modInfo);
     virtual ~OBBTree();
     void init();
@@ -28,5 +28,5 @@
     virtual void flushTree();
 
-    virtual void collideWith(const WorldEntity& entity1, const WorldEntity& entity2) const;
+    virtual void collideWith(WorldEntity* entity1, WorldEntity* entity2);
     virtual void drawBV(int depth, int drawMode) const;
 
Index: branches/current_cd/src/lib/collision_detection/obb_tree_node.cc
===================================================================
--- branches/current_cd/src/lib/collision_detection/obb_tree_node.cc	(revision 6909)
+++ branches/current_cd/src/lib/collision_detection/obb_tree_node.cc	(revision 6911)
@@ -515,5 +515,5 @@
 
 
-void OBBTreeNode::collideWith(const BVTreeNode& treeNode, const WorldEntity& nodeA, const WorldEntity& nodeB) const
+void OBBTreeNode::collideWith(const BVTreeNode& treeNode, WorldEntity* nodeA, WorldEntity* nodeB)
 {
   PRINTF(3)("collideWith\n");
@@ -525,5 +525,5 @@
   if( this->overlapTest(*this->bvElement, *(((const OBBTreeNode*)&treeNode)->bvElement), nodeA, nodeB))
   {
-    PRINTF(3)("collision @ lvl %i, object %s vs. %s, (%p, %p)\n", this->depth, nodeA.getClassName(), nodeB.getClassName(), this->nodeLeft, this->nodeRight);
+    PRINTF(3)("collision @ lvl %i, object %s vs. %s, (%p, %p)\n", this->depth, nodeA->getClassName(), nodeB->getClassName(), this->nodeLeft, this->nodeRight);
 
     /* check if left node overlaps */
@@ -552,15 +552,15 @@
     if( unlikely(this->nodeRight == NULL && this->nodeLeft == NULL))
     {
-      nodeA.collidesWith(nodeB, (((const OBBTreeNode*)&treeNode)->bvElement->center));
-
-      nodeB.collidesWith(nodeA, this->bvElement->center);
-    }
-
-  }
-}
-
-
-
-bool OBBTreeNode::overlapTest(const OBB& boxA, const OBB& boxB, const WorldEntity& nodeA, const WorldEntity& nodeB) const
+      nodeA->collidesWith(nodeB, (((const OBBTreeNode*)&treeNode)->bvElement->center));
+
+      nodeB->collidesWith(nodeA, this->bvElement->center);
+    }
+
+  }
+}
+
+
+
+bool OBBTreeNode::overlapTest(const OBB& boxA, const OBB& boxB, WorldEntity* nodeA, WorldEntity* nodeB)
 {
   //   if( boxB == NULL || boxA == NULL)
@@ -575,14 +575,14 @@
   Vector rotAxisB[3];
 
-  rotAxisA[0] =  nodeA.getAbsDir().apply(boxA.axis[0]);
-  rotAxisA[1] =  nodeA.getAbsDir().apply(boxA.axis[1]);
-  rotAxisA[2] =  nodeA.getAbsDir().apply(boxA.axis[2]);
-
-  rotAxisB[0] =  nodeB.getAbsDir().apply(boxB.axis[0]);
-  rotAxisB[1] =  nodeB.getAbsDir().apply(boxB.axis[1]);
-  rotAxisB[2] =  nodeB.getAbsDir().apply(boxB.axis[2]);
-
-
-  t = nodeA.getAbsCoor() + nodeA.getAbsDir().apply(boxA.center) - ( nodeB.getAbsCoor() + nodeB.getAbsDir().apply(boxB.center));
+  rotAxisA[0] =  nodeA->getAbsDir().apply(boxA.axis[0]);
+  rotAxisA[1] =  nodeA->getAbsDir().apply(boxA.axis[1]);
+  rotAxisA[2] =  nodeA->getAbsDir().apply(boxA.axis[2]);
+
+  rotAxisB[0] =  nodeB->getAbsDir().apply(boxB.axis[0]);
+  rotAxisB[1] =  nodeB->getAbsDir().apply(boxB.axis[1]);
+  rotAxisB[2] =  nodeB->getAbsDir().apply(boxB.axis[2]);
+
+
+  t = nodeA->getAbsCoor() + nodeA->getAbsDir().apply(boxA.center) - ( nodeB->getAbsCoor() + nodeB->getAbsDir().apply(boxB.center));
 
   //   printf("\n");
Index: branches/current_cd/src/lib/collision_detection/obb_tree_node.h
===================================================================
--- branches/current_cd/src/lib/collision_detection/obb_tree_node.h	(revision 6909)
+++ branches/current_cd/src/lib/collision_detection/obb_tree_node.h	(revision 6911)
@@ -9,5 +9,5 @@
 
 #include "bv_tree_node.h"
-
+#include "plane.h"
 
 class BoundingVolume;
@@ -32,5 +32,5 @@
     virtual void spawnBVTree(const modelInfo& modelInf, const int* triangleIndexes, int length);
 
-    virtual void collideWith(const BVTreeNode& treeNode, const WorldEntity& nodeA, const WorldEntity& nodeB) const;
+    virtual void collideWith(const BVTreeNode& treeNode, WorldEntity* nodeA, WorldEntity* nodeB);
     virtual void drawBV(int depth, int drawMode, const Vector& color = Vector(1,0,0), bool top = true) const;
     void debug() const;
@@ -48,5 +48,5 @@
     void forkBox(OBB& box);
 
-    bool overlapTest(const OBB& boxA, const OBB& boxB, const WorldEntity& nodeA, const WorldEntity& nodeB) const;
+    bool overlapTest(const OBB& boxA, const OBB& boxB, WorldEntity* nodeA, WorldEntity* nodeB);
 
 
