anchor.diff:      int index = _targets.indexOf(element);
       if(index != -1) {
         // remove down handler
  -      _targets[index].on.mouseDown.remove(_mouseDown);
  +      _cancel("mouseDown", _targets[index]);
         _targets.removeAt(index);
         if(dragOver != null) {
  -        element.on.mouseOver.remove(_mouseOver, true);
  +        _cancel("mouseOver", element);
         }
         if(dragOut != null) {
  -        element.on.mouseOut.remove(_mouseOut, true);
  +        _cancel("mouseOut", element);
         }
       }
     }
  
positive.code:     _targets.add(element);
      // if size is bigger, the element is new, so add down handler
      if(_targets.length > oldSize && enabled) {
        element.on.mouseDown.add(_mouseDown);
        // if dragging or pending, add event handlers to the new element
        if(_dragging || _dragStartPending) {
          if(dragOver != null) {
            element.on.mouseOver.add(_mouseOver, true);
          }
          if(dragOut != null) {
            element.on.mouseOut.add(_mouseOut, true);
          }
        }
      }
  
negative.code:     
      // remove callbacks
      if(drag != null) {
        // TODO this can just be paused
        // TODO as Element?
        _cancel("mouseMove", document);
      }
      if(dragOver != null) {
        for(Element e in _targets) {
          _cancel("mouseOver", e);
        }
      }
      if(dragOut != null) {
        for(Element e in _targets) {
          _cancel("mouseOut", e);
        }
      }
      
  