There are a lot of special cases in the scheduling code - we should add coverage testing to make sure we actually hit all of them.