At the moment the CLI handler is hosting most of the actual execution logic while being tied to the CLI input. It'd be nice if the logic got moved somewhere separately to better accept arguments from other inputs without the need to rewrite most of the cli.py code.