model: pull thread control logic out of take_step(), check_current...()