Kevin Shih’s exercise 10.3