move data types, instances, and combinators into specific parser files (yes, introducing duplication possibly) in order to make each parser totally self-contained and very clear exactly what instances and so on it needs
make 3rd parser self-sufficient and implement the new, simple grammar