hw2 part 2.3.10
hw2 part 2.3.11
hw2 part 2.3.12
hw2 part 2.3.13