working on 2.21 sicp
2.24-2.32 sicp
merged conflict