first stuff for replacing coroutine by context