Source most of the preproc work to its own method