I'm willing to change this back to one function, but I'd like to know if there's a better reason for doing so other than "this isn't a pattern we're using elsewhere at the moment". I don't think using this pattern here hurts comprehension for the reader.

The main reason I went ahead and did this is because I was trying to optimize for the already-finished case, as it can reasonably be expected that the vast majority of calls to `doit()` will be doing nothing.