the regexer

* and a lot of code that isn't yet testable
* It is easier to write an incorrect program than understand a correct one