split _output_*() functions to _read_input_as_list() and _parse_*() functions