Exercise 3.18 ~ 3.19