   #  - Event bubbling phase: Cursor position updated to clicked position.
   observeMouse: ->
     locationStack = []
-    locationCheckTimeoutID = null
+    @locationCheckTimeoutID = null
 
     checkLocationChangeAfter = (location, timeout) =>
-      clearTimeout(locationCheckTimeoutID)
-      locationCheckTimeoutID = setTimeout =>
-        locationCheckTimeoutID = null
+      clearTimeout(@locationCheckTimeoutID)
+      @locationCheckTimeoutID = setTimeout =>
         @checkLocationChange(location)
       , timeout
 

        checkLocationChangeAfter(location, 300)

    handleBubble = (event) =>
      clearTimeout(locationCheckTimeoutID)
      if location = locationStack.pop()
        setTimeout =>
          @checkLocationChange(location)

    console.log 'debug: ', newValue

  deactivate: ->
    clearTimeout(@locationCheckTimeoutID)
    @subscriptions.dispose()
    @history?.destroy()
    [@subscriptions, @history, @locationCheckTimeoutID] = []

  getHistory: ->
    return @history if @history?
