one more test, and some refactoring