make separate data/connect handlers
rework flow of coroutine queue