making coroutine.wrap actually useful