 				check: (v) =>
 					isString(v) or CUI.isFunction(v)
 
+	readOpts: ->
+		super()
+		@__autoRepeatTimeout = null
+
 	__killTimeout: ->
-		if globalDrag?.autoRepeatTimeout
-			CUI.clearTimeout(globalDrag.autoRepeatTimeout)
-			globalDrag.autoRepeatTimeout = null
+		if @__autoRepeatTimeout
+			CUI.clearTimeout(@__autoRepeatTimeout)
+			@__autoRepeatTimeout = null
 		@
 
 	__cleanup: ->
+
 		@__killTimeout()
 		if @__ref
 			Events.ignore(instance: @__ref)
 			@__ref = null
-		globalDrag = null
+
+		if globalDrag?.instance == @
+			globalDrag = null
+		return
 
 	destroy: ->
 		super()

				return

		end_drag = (ev, stop = false) =>
			start_target = globalDrag.$source
			start_target_parents = CUI.DOM.parents(start_target)


			$source: $target
			startEvent: ev
			startCoordinates: point
			instance: @
			startScroll:
				top: $target[0].scrollTop
				left: $target[0].scrollLeft
