Move drawing logic to drawers

Close #1106.
d3.map is appropriate here