finish exercise 3.19 ~ 3.20, in section 3.3.1