This removes quite a bit of indirection from result processing, at the cost of making a few of the tests more awkward.