passes test 1 and 2
passes all tests