Move 2D canvas to a distinct class for better isolation
Merge remote-tracking branch 'origin/newplater'