coroutines working but still needs more testing