Refactor 2d

Ready for merge.  Lookin at you, Caswell
this should be `canvas.(...)`.  Not sure where I copied this from but it is less than ideal.