Index: branches/cr/src/lib/collision_reaction/collision_handle.cc
===================================================================
--- branches/cr/src/lib/collision_reaction/collision_handle.cc	(revision 7945)
+++ branches/cr/src/lib/collision_reaction/collision_handle.cc	(revision 7946)
@@ -43,4 +43,12 @@
 {
   // delete what has to be deleted here
+}
+
+/**
+ * restores the CollisionHandle to its initial state
+ */
+void CollisionHandle::reset()
+{
+  this->flushCollisions();
 }
 
Index: branches/cr/src/lib/collision_reaction/collision_handle.h
===================================================================
--- branches/cr/src/lib/collision_reaction/collision_handle.h	(revision 7945)
+++ branches/cr/src/lib/collision_reaction/collision_handle.h	(revision 7946)
@@ -27,7 +27,7 @@
     virtual ~CollisionHandle();
 
+    void reset();
 
     void addTarget(long classID);
-
     void registerCollision(Collision* collision);
 
Index: branches/cr/src/lib/collision_reaction/cr_engine.cc
===================================================================
--- branches/cr/src/lib/collision_reaction/cr_engine.cc	(revision 7945)
+++ branches/cr/src/lib/collision_reaction/cr_engine.cc	(revision 7946)
@@ -64,4 +64,7 @@
 
 
+/**
+ * flushes the CollisionHandles and restores the CREngine to the initial state
+ */
 void CREngine::reset()
 {
@@ -69,5 +72,8 @@
   std::vector<CollisionHandle*>::iterator it;
   for( it = this->collisionHandles.begin(); it != this->collisionHandles.end(); it++)
+  {
+    (*it)->reset();
     delete *it;
+  }
   this->collisionHandles.clear();
 }
@@ -78,4 +84,5 @@
  *  @param owner: the WE to subscribe
  *  @param type: the type of collision reaction to perform
+ *  @return the newly created CollisionHandle
  */
 CollisionHandle* CREngine::subscribeReaction(WorldEntity* owner, CRType type)
@@ -86,10 +93,23 @@
 
 
-bool CREngine::unsubscribeReaction(WorldEntity* worldEntity)
-{}
-
-
+/**
+ * unsubscribe reaction from the reaction list
+ *  @param collisionHandle the CollisionHandle to remove
+ *  @param returns true if worked collrectly
+ */
 bool CREngine::unsubscribeReaction(CollisionHandle* collisionHandle)
-{}
+{
+  std::vector<CollisionHandle*>::iterator it;
+  for( it = this->collisionHandles.begin(); it != this->collisionHandles.end(); it++)
+  {
+    if( *it == collisionHandle)
+    {
+      this->collisionHandles.erase(it);
+      delete collisionHandle;
+      return true;
+    }
+  }
+  return false;
+}
 
 
Index: branches/cr/src/lib/collision_reaction/cr_engine.h
===================================================================
--- branches/cr/src/lib/collision_reaction/cr_engine.h	(revision 7945)
+++ branches/cr/src/lib/collision_reaction/cr_engine.h	(revision 7946)
@@ -46,5 +46,4 @@
   CollisionHandle* subscribeReaction(WorldEntity* worldEntity, CRType type);
 
-  bool unsubscribeReaction(WorldEntity* worldEntity);
   bool unsubscribeReaction(CollisionHandle* collisionHandle);
 
Index: branches/cr/src/world_entities/world_entity.cc
===================================================================
--- branches/cr/src/world_entities/world_entity.cc	(revision 7945)
+++ branches/cr/src/world_entities/world_entity.cc	(revision 7946)
@@ -94,4 +94,6 @@
   if (this->healthWidget != NULL)
     delete this->healthWidget;
+
+  this->unsubscribeReaction();
 }
 
@@ -263,4 +265,28 @@
 
 /**
+ * unsubscribes a specific reaction from the worldentity
+ *  @param type the reaction to unsubscribe
+ */
+void WorldEntity::unsubscribeReaction(CREngine::CRType type)
+{
+  if( this->collisionHandles[type] == NULL)
+    return;
+
+  CREngine::getInstance()->unsubscribeReaction(this->collisionHandles[type]);
+  this->collisionHandles[type] = NULL;
+}
+
+
+/**
+ * unsubscribes all collision reactions
+ */
+void WorldEntity::unsubscribeReaction()
+{
+  for( int i = 0; i < CREngine::CR_NUMBER; i++)
+    this->unsubscribeReaction((CREngine::CRType)i);
+}
+
+
+/**
  * registers a new collision to this world entity
  *  @param collisionEvent the event
Index: branches/cr/src/world_entities/world_entity.h
===================================================================
--- branches/cr/src/world_entities/world_entity.h	(revision 7945)
+++ branches/cr/src/world_entities/world_entity.h	(revision 7946)
@@ -71,4 +71,6 @@
   /* --- Collision Reaction Block --- */
   void subscribeReaction(CREngine::CRType type, int nrOfTargets, long target, ...);
+  void unsubscribeReaction(CREngine::CRType type);
+  void unsubscribeReaction();
   bool registerCollision(WorldEntity* entityA, WorldEntity* entityB, BoundingVolume* bvA, BoundingVolume* bvB);
 
