exercises 2.7, 2.8, 2.9, 2.10