So yeah, a `Group` is a paperjs class. (You can find its reference here: http://paperjs.org/reference/group ). The point I was making to Tom in the other comments is that the view class does not deal with drawing *or* redrawing. Here are the responsibilities of the `NodeView` class:

 * On initialisation, it creates the necessary paperjs items and groups and constructs them to form the visual representation of a node. At this point, the representation is very much visible.
 * When the state of the associated `Node` instance changes, that instance will call methods on its `NodeView` instance. These methods roughly translate to the changes to the representation that should occur for those state changes. When the `NodeView` receives these method calls, it will update the properties of the paperjs group and items to reflect the change needed.

Paperjs is designed so that when it notices a change in the properties of one of its items, it will redraw automatically.

As to the wires, yes, when the node moves, you are correct that the wires' views should be updated. But likely the flow for that would be that when a node moves, it sends all its wires a `wire.end-did-move!` and then the wire will check where its ends are supposed to be and call the relevant methods on its `WireView` instance itself. So you see that the flow of communication is as follows:

            Screen
    ----------------------
       ^              ^   
       |              |
    NodeView       WireView
       ^              ^   
       |              |
      Node <-------> Wire