refactored & simplified sprite caching & drawing