problem 2-28
problem 2-29