decouple the tests from the implementation