API changes

Added a bunch of functionlaity as well as changed the CLI layout to make the
command line args more understandable.