Exercise 4.17 ~ 4.18