use latches rather than mucking with the scheduler