add generator coroutines