task 22 with tests