       console.log '  Did you include leap.js?'
       return
     
+    @registerLeapFrame           controller
+    @registerFrameRotated        controller
+    @registerFrameScaled         controller
+    @registerFrameTranslated     controller
+    @registerHandAdded           controller
+    @registerHandRemoved         controller
+    @registerHandsUpdated        controller
+    @registerHandRotated         controller
+    @registerHandScaled          controller
+    @registerHandTranslated      controller
+    @registerGestureCircled      controller
+    @registerGestureSwiped       controller
+    @registerGestureKeyTapped    controller
+    @registerGestureScreenTapped controller
+    @_clearDuplicateCaptures()
+
+  registerLeapFrame: (controller) ->
     if controller.on_leap_frame
       @startLooping()
       @_captures.push 'captureFrame'
       @on 'frame', (data) => controller.on_leap_frame data
+
+  registerFrameRotated: (controller) ->
     if controller.leap_frame_rotated
       @startLooping()
       @_captures.push 'captureFrameRotation'
       @on 'frameRotate', (data) -> controller.leap_frame_rotated data
+
+  registerFrameScaled: (controller) ->
     if controller.leap_frame_scaled
       @startLooping()
       @_captures.push 'captureFrameScale'
       @on 'frameScale', (data) -> controller.leap_frame_scaled data
-    if func = controller.leap_frame_translated || controller.leap_frame_moved
+
+  registerFrameTranslated: (controller) ->
+    if controller.leap_frame_translated || controller.leap_frame_moved
       @startLooping()
       @_captures.push 'captureFrameTranslate'
-      @on 'frameTranslate', (data) -> func.call controller, data
+      @on 'frameTranslate', (data) ->
+        (controller.leap_frame_translated || controller.leap_frame_moved) data
+
+  registerHandAdded: (controller) ->
     if controller.leap_hand_added
       @startLooping()
       @_captures.push 'captureHandAdd'
       @on 'handAdd', (data) -> controller.leap_hand_added data
+
+  registerHandRemoved: (controller) ->
     if controller.leap_hand_removed
       @startLooping()
       @_captures.push 'captureHandAdd'
       @_captures.push 'captureHandRemove'
       @on 'handRemove', (data) -> controller.leap_hand_removed data
+
+  registerHandsUpdated: (controller) ->
     if controller.leap_hands_updated
       @startLooping()
       @_captures.push 'captureHandAdd'
       @_captures.push 'captureHandRemove'
       @_captures.push 'captureHandUpdate'
       @on 'handUpdate', (data) -> controller.leap_hands_updated data
+
+  registerHandRotated: (controller) ->
     if controller.leap_hand_rotated
       @startLooping()
       @_captures.push 'captureHandRotate'

        for event in events
          controller.leap_gesture_key_tapped event
        true
    if controller.leap_gesture_screen_tapped
      @startLooping()
      @_captures.push 'captureGestures'

        for event in events
          controller.leap_hand_rotated event
        true

  registerHandScaled: (controller) ->
    if controller.leap_hand_scaled
      @startLooping()
      @_captures.push 'captureHandScale'
