add basic command line interface
This adds a basic command line interface to all the core functionality. Output is printed to stdout.
includes some cleanup commits. review commits individually, don't squash
This adds a basic command line interface to all the core functionality. Output is printed to stdout.
includes some cleanup commits. review commits individually, don't squash