Add a bunch of tests.  Fix them and remove the interface non-sense.