             # so can be accessed later when drawing the line
             
             # calculate the position of the center marker
-            a = (d.startAngle + d.endAngle) / 2 ;
+            a = (d.startAngle + d.endAngle) / 2 
             
             #trig functions adjusted to use the angle relative
             #to the "12 o'clock" vector:
-            d.cx = Math.sin(a) * (that.radius - 75);
-            d.cy = -Math.cos(a) * (that.radius - 75);
+            d.cx = Math.sin(a) * (that.radius - 75)
+            d.cy = -Math.cos(a) * (that.radius - 75)
             
             # calculate the default position for the label,
             #   so that the middle of the label is centered in the arc
-            bbox = d3.getBBox();
+            bbox = d3.getBBox()
             #bbox.width and bbox.height will 
             #describe the size of the label text
-            labelRadius = that.radius - 20;
-            d.x =  Math.sin(a) * (labelRadius);
-            d.l = d.x - bbox.width / 2 - 2;
-            d.r = d.x + bbox.width / 2 + 2;
-            d.y = -Math.cos(a) * (that.radius - 20);
-            d.b = d.oy = d.y + 5;
-            d.t = d.y - bbox.height - 5 ;
+            labelRadius = that.radius - 20
+            d.x =  Math.sin(a) * (labelRadius)
+            d.l = d.x - bbox.width / 2 - 2
+            d.r = d.x + bbox.width / 2 + 2
+            d.y = -Math.cos(a) * (that.radius - 20)
+            d.b = d.oy = d.y + 5
+            d.t = d.y - bbox.height - 5 
             
             # check whether the default position 
             #   overlaps any other labels
-            conflicts = [];
+            conflicts = []
             labelLayout.visit((node, x1, y1, x2, y2) -> 
                 #recurse down the tree, adding any overlapping 
                 #node is the node in the quadtree, 

                    ||(y2 < d.t - maxLabelHeight/2 ) )
                        #bottom (maxY) edge of node is less than the top of label
                    
                      return true; #don't bother visiting children or checking this node
                
                p = node.point;
                v = false, h = false;
                if ( p ) { #p is defined, i.e., there is a value stored in this node
                    h =  ( ((p.l > d.l) && (p.l <= d.r))
                       || ((p.r > d.l) && (p.r <= d.r)) 
                       || ((p.l < d.l)&&(p.r >=d.r) ) ); //horizontal conflict
                
                    v =  ( ((p.t > d.t) && (p.t <= d.b))
                       || ((p.b > d.t) && (p.b <= d.b))  
                       || ((p.t < d.t)&&(p.b >=d.b) ) ); //vertical conflict
                
                    if (h&&v)
                        conflicts.push(p); //add to conflict list
                }
                     
            );

            .append("circle")
            .attr("cx", 3)
            .attr("cy", 3)
            .attr("r", 3)
        }
        #Create/select <g> elements to hold the different types of graphics
        #and keep them in the correct drawing order
        pathGroup = d3.svg.select("g.piePaths")
        if (pathGroup.empty() ){
            pathGroup = d3.svg.append("g")
                       .attr("class", "piePaths")
        }
        pointerGroup = d3.svg.select("g.pointers")
        if (pointerGroup.empty() ) {
            pointerGroup = d3.svg.append("g")
                           .attr("class", "pointers")
        }
        labelGroup = d3.svg.select("g.labels")
        if (labelGroup.empty() ) {
            labelGroup = d3.svg.append("g")
                         .attr("class", "labels")
        }
        
        d3.path = pathGroup.selectAll("path.pie")
            .data(data)

        d3.path.enter().append("path")
            .attr("class", "pie")
            .attr("fill", (d, i) -> 
                return d3.color(i)
        );

#        this.path.transition()
