Add a bunch of functionality

Now just needs command line bindings.