tidy and re-order into recognisers, lifting recognisers to parsers, and combinators that can apply to both