post for exercise 2.7 -- 2.16, unfinished