Lets not change this now, but I think we are going down the road of delegate spaghetti which becomes hard to manage. Instead we can use actual concurrency or pass in blocks but lets not hold things up for that refactor.