anchor.diff:          return d['x'].toString();
         };
       }
  +    
  +    if (popoverContentFunc != null) {
  +      _ArcHover hover = new _ArcHover($elmt, arc, width, height);
  +      hover.popoverContentFunc = popoverContentFunc;
  +          
  +      path.onMouseOver.listen((MouseEvent evt) {
  +        var sel = selectElement(evt.target);
  +        Object datum = sel.datum;
  +        if (datum != null) {
  +          hover.datum = datum;
  +        }
  +      });
  +      
  +      $elmt.onMouseLeave.listen((_) {
  +        hover.datum = null;
  +      });
  +    }
     }
     
     void set data(List value) {
  
positive.code:         .enter.append("g");
      
      g.attr("class", "arc");
        
      var path = g.append("path");
      path.attrFunc("d", arc);
      path.style.fill = (Object d, int i) => "#${(color(i) as int).toRadixString(16)}";
  
negative.code:   num outerRadiusPercent = 1;
    
    bool has_legend = false;
    
    var popoverContentFunc;
    
    PieChart(Element this.$elmt, { int this.initial_width, int this.initial_height }) {
      Rectangle rect = $elmt.getBoundingClientRect();
  