separate tests from the implementation