exercise 2-29, 30 added