Solution for Exercise 10.7

This is a solution for Exercise 10.7. See the source code for this file for details.