Completed Section 8.3 closes #22