making stuff more asynchronous