Move drawing logic to drawers

Close #1106.
The awkwardness that I can see that will arise is if we make another class, that class will need to duplicate this exact same logic.  I'm not sure why we can't wrap redundant functionality into some parent method