Coroutine

Somewhat stable merge from development coroutine branch.