     console.log 'debug: ', newValue
 
   deactivate: ->
+    clearTimeout(@locationCheckTimeoutID)
     @subscriptions.dispose()
     @history?.destroy()
-    [@subscriptions, @history] = []
+    [@subscriptions, @history, @locationCheckTimeoutID] = []
 
   getHistory: ->
     return @history if @history?

  #  - Event bubbling phase: Cursor position updated to clicked position.
  observeMouse: ->
    locationStack = []
    locationCheckTimeoutID = null

    checkLocationChangeAfter = (location, timeout) =>
      clearTimeout(locationCheckTimeoutID)
      locationCheckTimeoutID = setTimeout =>
        locationCheckTimeoutID = null
        @checkLocationChange(location)
      , timeout


        checkLocationChangeAfter(location, 300)

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