Done: Separate responsibility
CanvasController - does not know internal implementation of Graph or socket
GraphService - ties together Graph and socket and presents a single interface to CanvasController
CanvasGraph - does not know about socket
Server - does not know about Graph
Done: Separate responsibility CanvasController - does not know internal implementation of Graph or socket GraphService - ties together Graph and socket and presents a single interface to CanvasController CanvasGraph - does not know about socket Server - does not know about Graph