cleaned up canvas interface