Index: branches/cr/src/lib/collision_reaction/collision.cc
===================================================================
--- branches/cr/src/lib/collision_reaction/collision.cc	(revision 8126)
+++ branches/cr/src/lib/collision_reaction/collision.cc	(revision 8129)
@@ -45,15 +45,4 @@
 
 /**
- * handles the collision events
- */
-void Collision::handleCollisionEvents()
-{
-
-  this->bDispatched = true;
-  this->flushCollisionEvents();
-}
-
-
-/**
  * flushes the CollisionEvent list
  */
@@ -66,5 +55,5 @@
   this->entityBCollide = false;
 
-  this->bDispatched = false;
+  this->bDispatched = true;
 
   this->collisionEvents.clear();
Index: branches/cr/src/lib/collision_reaction/collision.h
===================================================================
--- branches/cr/src/lib/collision_reaction/collision.h	(revision 8126)
+++ branches/cr/src/lib/collision_reaction/collision.h	(revision 8129)
@@ -45,4 +45,6 @@
     /** @returns true if this Collision has already been dispatched */
     inline bool isDispatched() { return this->bDispatched; }
+    /** sets the dispatched flag to true */
+    inline void dispatched() { this->bDispatched = true; }
 
     /** registers a @param event CollisionEvent to take place */
@@ -52,8 +54,4 @@
 
 
-    void handleCollisionEvents();
-
-
-  private:
     void flushCollisionEvents();
 
Index: branches/cr/src/lib/collision_reaction/collision_handle.cc
===================================================================
--- branches/cr/src/lib/collision_reaction/collision_handle.cc	(revision 8126)
+++ branches/cr/src/lib/collision_reaction/collision_handle.cc	(revision 8129)
@@ -21,4 +21,7 @@
 #include "collision.h"
 #include "collision_event.h"
+#include "collision_reaction.h"
+
+#include "cr_object_damage.h"
 
 using namespace std;
@@ -37,7 +40,24 @@
 
   this->bCollided = false;
-  this->bContinuousPoll = false;
   this->bDispatched = false;
-  this->bStopOnFirstCollision = false;
+
+  if( this->type == CREngine::CR_PHYSICS_STEP_BACK)
+    this->bContinuousPoll = false;
+  else
+    this->bContinuousPoll = true;
+
+  if( this->type == CREngine::CR_OBJECT_DAMAGE)
+    this->bStopOnFirstCollision = true;
+  else
+   this->bStopOnFirstCollision = false;
+
+  switch( type)
+  {
+    case CREngine::CR_OBJECT_DAMAGE:
+      this->collisionReaction = new CRObjectDamage();
+      break;
+    default:
+      break;
+  };
 }
 
@@ -166,5 +186,5 @@
   vector<Collision*>::iterator it = this->collisionList.begin();
   for(; it < this->collisionList.end(); it++) {
-    (*it)->handleCollisionEvents();
+    this->collisionReaction->reactToCollision(*it);
   }
 
Index: branches/cr/src/lib/collision_reaction/collision_handle.h
===================================================================
--- branches/cr/src/lib/collision_reaction/collision_handle.h	(revision 8126)
+++ branches/cr/src/lib/collision_reaction/collision_handle.h	(revision 8129)
@@ -16,4 +16,5 @@
 class Collision;
 class WorldEntity;
+class CollisionReaction;
 
 
@@ -63,4 +64,6 @@
     std::vector<long>             targetList;              //!< a list of target classes for filtering
 
+    CollisionReaction*            collisionReaction;       //!< reference to the collision reaction object
+
 };
 
Index: branches/cr/src/lib/collision_reaction/cr_object_damage.cc
===================================================================
--- branches/cr/src/lib/collision_reaction/cr_object_damage.cc	(revision 8126)
+++ branches/cr/src/lib/collision_reaction/cr_object_damage.cc	(revision 8129)
@@ -54,5 +54,7 @@
   float damage;
 
-  PRINTF(0)("dealing damage\n");
+  PRINTF(0)("Dealing damage - Handling collision: %s vs %s\n",
+            collision->getEntityA()->getClassName(),
+            collision->getEntityB()->getClassName());
 
   // the collision damage been dealed by the entity
@@ -66,4 +68,7 @@
   }
 
+  collision->flushCollisionEvents();
+  collision->dispatched();
+
 //   const std::vector<CollisionEvent*>* collisionEvents = &(collision->getCollisionEvents());
 //   std::vector<CollisionEvent*>::const_iterator it = collisionEvents->begin();
