Updating to draw based on an operation list rather than lots of function calls, functional but faster