Move drawing logic to drawers

Close #1106.
ok, lets implement the copy-then-modify appraoch?