     nodeUpdate = node.transition().duration(duration).attr('transform', (d) =>
       'translate(' + d.x + ',' + (@height - (d.y)) + ')'
     )
-    nodeUpdate.select('circle').attr('r', 4)
-                               .style('stroke', (d) ->
-                                 if d.deleted then "#ec5747")
-                               .style('fill', (d) ->
-                                 if d._children then "lightsteelblue" else "#fff")
+    @paintNode(nodeUpdate.select('circle'))
 
     nodeUpdate.select('text').style('fill-opacity', 1)
 

      @update d
      return
    )
    nodeEnter.append('svg:circle').attr('r', 4)
                                  .style('stroke', (d) ->
                                    if d.deleted then "#ec5747")
                                  .style('fill', (d) ->
                                    if d._children then "lightsteelblue" else "#fff")


    nodeEnter.append('svg:text').attr('dy', -10).attr('text-anchor', 'middle').text((d) ->
      d.title

    @drawLinks()
    @drawWithoutParent()

  paintNode: (node) ->
    node.attr('r', 4)
        .style('stroke', (d) ->
          if d.deleted then "#ec5747"
        )
        .style('fill', (d) ->
          if d.children || d._children is undefined
            "#fff"
          else
            "lightsteelblue"
        )

  update: (source) ->
    self = this
    duration = if d3.event and d3.event.altKey then 5000 else 500
