final submission with 4 tests