completed through problem 16