big change in deferred generator. It now behaves like a coroutine with a much better inline syntax