Exercise 2.53 ~ 2.55