Completed Section 8.2 closes #21