update for sicp charpter 5