Completed Section 7.4 closes #18