prepare to remove coroutine dependency