adding the roll your own coroutines
Merge commit '7b72c68f2132ab97ccd088073538c8ac3d81715b'