added coroutine macros