Move drawing logic to drawers

Close #1106.
I think this approach is more readable.