Move drawing logic to drawers

Close #1106.
can these functions all get jsdoc explaining what they are for