Unrolled mainloop, simplified turn_scheduler