change all instances of blocking to coroutine