docs: function (endpoint, placeholder, _jsPlumb) {
  		var stopped = false;
  		return {
  			drag: function () {
  				if (stopped) {
  					stopped = false;
  					return true;
  				}
  
  				if (placeholder.element) {
  					var _ui = _jsPlumb.getUIPosition(arguments, _jsPlumb.getZoom());
  					jsPlumb.setPosition(placeholder.element, _ui);
  					_jsPlumb.repaint(placeholder.element, _ui);
  					// always repaint the source endpoint, because only continuous/dynamic anchors cause the endpoint
  					// to be repainted, so static anchors need to be told (or the endpoint gets dragged around)
  					endpoint.paint({anchorPoint:endpoint.anchor.getCurrentLocation({element:endpoint.element})});
  				}
  			},
  			stopDrag: function () {
  				stopped = true;
  			}
  		};
  	}