images draw on gui asynchronously, still need lots of locks while generating