Exercise 3.53 ~ 3.55