exercise 2-31 ... 37 added