most of the canvas code is working with ajax calls to the controller - lots of cleanup still to do