parsers for input; pretty printers for output