pretty much full test coverage, close #6