Can we put all this stuff in a single *drawdata pointer and keep the details of how it is implemented to wm_draw.c?