the code review logic to this point is kind of convoluted, and still is for the moment, but this moves some of the stuff into a more coherent spot in the expectation of reuse. most of the refactoring is still to come