make drawing.go calls more memory efficient and use closures instead of channels