Clean up draw function, split into methods