Only use subprocesses for formatting, and allow configuration of the formatter's command line for each supported data format. This allows for better integration in existing pipelines with standard and I dare say, more common/popular formatters.