finish exercise 3.33 ~ 3.37, in section 3.3.5