canvas constructor
cleanup
cleanup
cleanup. 3 levels working