now passes all tests