Some more complex unit tests, I think I have complete coverage now
improved the interface comments