Refactor w/o coroutine