Finished Exercise 28.