solution for final exercise 16