Refactor the canvas so all it does is draw and throw events. The logic should be moved into a dedicated logic class to handle manipulating the model.