ignore coverage/output directories
Break apart into CLI & API

To facilitate testing & because it's the "right thing" to do.