all test cases work