added a object implementation of screenshot, with some kind of caching through a manager