add create extension point, pass storage around like asyncListener, remove a closure and take a callback in intial call