Also if it is nicely abstracted we can also rotate the canvas

Wow, that would be cool.