add much more test coverage