Index: trunk/src/lib/collision_reaction/Makefile.am
===================================================================
--- trunk/src/lib/collision_reaction/Makefile.am	(revision 7922)
+++ trunk/src/lib/collision_reaction/Makefile.am	(revision 7927)
@@ -4,8 +4,10 @@
 noinst_LIBRARIES = libORXcr.a
 
-libORXcr_a_SOURCES = cr_engine.cc
+libORXcr_a_SOURCES = cr_engine.cc \
+                     collision_handle.cc
 
 
 
-noinst_HEADERS =     cr_engine.h
+noinst_HEADERS =     cr_engine.h \
+ 										 collision_handle.h
 
Index: trunk/src/lib/collision_reaction/collision_handle.cc
===================================================================
--- trunk/src/lib/collision_reaction/collision_handle.cc	(revision 7922)
+++ trunk/src/lib/collision_reaction/collision_handle.cc	(revision 7927)
@@ -10,5 +10,5 @@
 
    ### File Specific:
-   main-programmer: Patirick Boenzli
+   main-programmer: Patrick Boenzli
 */
 
@@ -24,7 +24,10 @@
  * @todo this constructor is not jet implemented - do it
 */
-CollisionHandle::CollisionHandle ()
+CollisionHandle::CollisionHandle (WorldEntity* owner, CREngine::CRType type)
 {
-   this->setClassID(CL_COLLISION_HANDLE, "CollisionHandle");
+  this->setClassID(CL_COLLISION_HANDLE, "CollisionHandle");
+
+  this->owner = owner;
+  this->type = type;
 
 }
Index: trunk/src/lib/collision_reaction/collision_handle.h
===================================================================
--- trunk/src/lib/collision_reaction/collision_handle.h	(revision 7922)
+++ trunk/src/lib/collision_reaction/collision_handle.h	(revision 7927)
@@ -8,6 +8,14 @@
 
 #include "base_object.h"
+#include "cr_engine.h"
+
+#include <vector>
+
 
 class Collision;
+class WorldEntity;
+
+// struct CRType;
+
 
 //! A class for defining collision reactions and storing events
@@ -15,6 +23,9 @@
 
  public:
-  CollisionHandle();
+  CollisionHandle(WorldEntity* owner, CREngine::CRType type);
   virtual ~CollisionHandle();
+
+
+  void addTarget();
 
   void registerCollision(Collision* collision);
@@ -25,11 +36,11 @@
  private:
    WorldEntity*                  owner;                   //!< the worldenity this reaction will be applied on
-   classID                       targetClass;             //!< the entities triggering the handle
+   CREngine::CRType              type;                    //!< the reaction type
 
    bool                          bDispatched;             //!< true if this handle has already been dispatched
-   bool                          bStopOnFirstCollision    //!< true if the cd of this object should be terminated after one match
+   bool                          bStopOnFirstCollision;   //!< true if the cd of this object should be terminated after one match
 
    std::vector<Collision*>       collisionList;           //!< a list full of collisions
-   std::vector<classID>          targetList;              //!< a list of target classes for filtering
+   std::vector<long>             targetList;              //!< a list of target classes for filtering
 
 };
Index: trunk/src/lib/collision_reaction/cr_engine.cc
===================================================================
--- trunk/src/lib/collision_reaction/cr_engine.cc	(revision 7922)
+++ trunk/src/lib/collision_reaction/cr_engine.cc	(revision 7927)
@@ -47,10 +47,11 @@
 
 
-CollisionHandle* CREngine::subscribeReaction(WorldEntity* worldEntity, CRType type, int nrOfTargets, ...)
+CollisionHandle* CREngine::subscribeReaction(WorldEntity* owner, CRType type, int nrOfTargets, ...)
 {
+
   va_list itemlist;
   va_start (itemlist, type);
-  for (int i = 0; i < nrOfTargets; i++)
-    this->targetList.push_back(va_arg(itemlist, int));
+//  for (int i = 0; i < nrOfTargets; i++)
+  //  this->targetList.push_back(va_arg(itemlist, int));
   va_end(itemlist);
 }
Index: trunk/src/lib/collision_reaction/cr_engine.h
===================================================================
--- trunk/src/lib/collision_reaction/cr_engine.h	(revision 7922)
+++ trunk/src/lib/collision_reaction/cr_engine.h	(revision 7927)
@@ -20,6 +20,9 @@
 {
 
+  public:
   typedef enum CRType {
-    CR_CONSERVATION_OF_MOMENTUM   = 0,
+    CR_PHYSICS_MOMENTUM   = 0,
+    CR_PHYSICS_GROUND,
+    CR_PHYSICS_GROUND_WALK,
 
     CR_OBJECT_DAMAGE,
@@ -28,12 +31,11 @@
     CR_VERTEX_TRAFO,
 
-    CR_CALLBACK,
+    CR_SPECIAL_CALLBACK,
 
     CR_NUMBER
   };
 
+  virtual ~CREngine(void);
 
-public:
-  virtual ~CREngine(void);
   /** @returns a Pointer to the only object of this Class */
   inline static CREngine* getInstance(void) { if (!singletonRef) singletonRef = new CREngine();  return singletonRef; };
@@ -57,8 +59,8 @@
   CREngine(void);
 
+
 private:
   std::vector<CollisionHandle*>       collisionHandles;         //!< list with the collision handles
   std::vector<Collision*>             cachedCollisions;         //!< a list of unused, cached collision events
-  std::vector<int>                    targetList;
 
   static CREngine*                    singletonRef;             //!< the reference to the CREngine object (singleton)
