Refactored and documented CanvasViewController