             ###
             conflicts = []
             labelLayout.visit (node, x1, y1, x2, y2) ->
-              #recurse down the tree, adding any overlapping 
-              #node is the node in the quadtree, 
-              #node.point is the value that we added to the tree
-              #x1,y1,x2,y2 are the bounds of the rectangle that
-              #this node covers
-              if x1 > d.r + maxLabelWidth / 2 or x2 < d.l - maxLabelWidth / 2 or y1 > d.b + maxLabelHeight / 2 or y2 < d.t - maxLabelHeight / 2
-                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 and p.l <= d.r or p.r > d.l and p.r <= d.r or p.l < d.l and p.r >= d.r
-                #horizontal conflict
-                v = p.t > d.t and p.t <= d.b or p.b > d.t and p.b <= d.b or p.t < d.t and p.b >= d.b
-                #vertical conflict
-                if h and v
-                  conflicts.push p
-                #add to conflict list
-              return
+                #recurse down the tree, adding any overlapping 
+                #node is the node in the quadtree, 
+                #node.point is the value that we added to the tree
+                #x1,y1,x2,y2 are the bounds of the rectangle that
+                #this node covers
+
+                if x1 > d.r + maxLabelWidth / 2 or x2 < d.l - maxLabelWidth / 2 or y1 > d.b + maxLabelHeight / 2 or y2 < d.t - maxLabelHeight / 2
+                    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 and p.l <= d.r or p.r > d.l and p.r <= d.r or p.l < d.l and p.r >= d.r
+                    #horizontal conflict
+                    v = p.t > d.t and p.t <= d.b or p.b > d.t and p.b <= d.b or p.t < d.t and p.b >= d.b
+                    #vertical conflict
+                    if h and v
+                        conflicts.push p
+                    #add to conflict list
+                return
             if conflicts.length
-              console.log d, ' conflicts with ', conflicts
-              rightEdge = d3.max(conflicts, (d2) ->
-                `var maxLabelHeight`
-                `var maxLabelWidth`
-                d2.r
+                console.log d, ' conflicts with ', conflicts
+                rightEdge = d3.max(conflicts, (d2) ->
+                    `var maxLabelHeight`
+                    `var maxLabelWidth`
+                    d2.r
               )
               d.l = rightEdge
               d.x = d.l + bbox.width / 2 + 5

        # and keep them in the correct drawing order
        pathGroup = svg.select('g.piePaths')
        if pathGroup.empty()
          pathGroup = svg.append('g').attr('class', 'piePaths')
        pointerGroup = svg.select('g.pointers')
        if pointerGroup.empty()
          pointerGroup = svg.append('g').attr('class', 'pointers')
        labelGroup = svg.select('g.labels')
        if labelGroup.empty()
          labelGroup = svg.append('g').attr('class', 'labels')
        path = pathGroup.selectAll('path.pie').data(piedata)
        #console.log("path",this.path.empty())
        path.enter().append('path').attr('class', 'pie').attr 'fill', (d, i) ->
          color i
        #path.attr('d',arc)
        #    .exit()
        path.transition().duration(1500).attrTween 'd', (d,i) ->

            s0 = undefined
            e0 = undefined
            if theOldDataInPie[i]
                s0 = theOldDataInPie[i].startAngle
                e0 = theOldDataInPie[i].endAngle
            else if !theOldDataInPie[i] and theOldDataInPie[i - 1]
                s0 = theOldDataInPie[i - 1].endAngle
                e0 = theOldDataInPie[i - 1].endAngle
            else if !theOldDataInPie[i - 1] and theOldDataInPie.length > 0
                s0 = theOldDataInPie[theOldDataInPie.length - 1].endAngle
                e0 = theOldDataInPie[theOldDataInPie.length - 1].endAngle
            else
                s0 = 0
                e0 = 0
            i = d3.interpolate({
                startAngle: 0
                endAngle: 0
            },
                startAngle: d.startAngle
                endAngle: d.endAngle)
            (t) ->
                b = i(t)
                return arc b
        path.exit()
            .transition()
            .duration(300)
