 
     if @selected?
       s = @selected
-      dx = (pos.x - s.mx + s.ox) - s.node.x
-      dy = (pos.y - s.my + s.oy) - s.node.y
-
-      moveFn = (node) ->
-        node.x += dx
-        node.y += dy
-      if s.node.forAll?
-        s.node.forAll(moveFn)
-      else
-        moveFn(s.node)
+      newx = pos.x - s.mx + s.ox
+      newy = pos.y - s.my + s.oy
+
+      s.node.move(newx, newy)
 
     if @merging?
       @merging.x = pos.x


  tryAll: (fn) ->
    return fn(this)

  radius: default_node_radius



  setPosition: (time) ->
    pos = lerp2d(time/@duration, @origpos, @destpos)
    @node.move(pos.x, pos.y)

  isFinished: (time) ->
    time >= @duration
