anchor.diff:      // not a child of the element the event was attached to
       if((event.currentTarget as Element).contains(event.fromElement)) return;
       
  +    _logger.fine("got mouse over event for ${event.currentTarget.hashCode}");
  +    
       // do actual start in case we were pending before
       _pendingToDrag();
       
  
positive.code:       // remove down handler
        _cancel("mouseDown", element);
        _targets.remove(element);
      }
      if(_overTargets.contains(element)) {
        // TOD if have subscribers?
        _cancel("mouseOver", element);
        _overTargets.remove(element);
      }
      if(_outTargets.contains(element)) {
        _cancel("mouseOut", element);
        _outTargets.remove(element);
      }
    }
    /// Remove targets from the set
    void removeTargets(List<Element> elements) {
      for(Element element in elements) {
        removeTarget(element);
      }
    }
    /// Remove all targets
    void removeAllTargets() {
      removeTargets(new List.from(_targets));
    }
    
    // The element that the current drag started on
  
negative.code:   bool get enabled => _enabled;
    bool _delayedDisable = false;
    set enabled(bool e) {
      _logger.fine("setting enabled to $e");
      // if we are currently dragging, delay a disable until it ends
      // TODO yikes, this is kind of scary
      if(_dragging && _enabled && !e) {
  