Lots of work, but all tests passing now!

This doesn't mean it's done or it works, just that the tests that are
here pass.
Watch for json also
Update our requirements!