working on draw() optimization