     document.addEventListener 'mouseup',   @handleEnd
 
   handleEnd: ->
-    document.removeEventListener 'mousemove', this.handleDrag
-    document.removeEventListener 'mouseup',   this.handleEnd
+    document.removeEventListener 'mousemove', @handleDrag
+    document.removeEventListener 'mouseup',   @handleEnd
 
   handleDrag: (e) ->
     @handleNoop(e)

    window.removeEventListener 'resize', @handleUpdate

  handleUpdate: ->
    { orientation } = this.props
    dimension = constants.orientation[orientation].dimension
    dimension = dimension.charAt(0).toUpperCase() + dimension.substr(1)
    sliderPos = this.slider["offset#{dimension}"]
    handlePos = this.handle?["offset#{dimension}"] or 0

    @setState
      limit: sliderPos - handlePos

      return if not isEditable
      # first copy state value to model if we were editing
      if @state["editing-#{property}"]
        newValue = parseInt ReactDOM.findDOMNode(@refs.focusable)?.value
        if newValue? then @updateRange property, newValue
      @setState "editing-#{property}": not @state["editing-#{property}"], ->
        @refs.focusable?.focus()

    keyDown = (evt) ->
      if evt.key is 'Enter'
