Treat Swing window as canvas rather than game-loop
Apply protocol directly to Canvas object
Fixed toString methods on data types