Starting section 10.3.2; tests all pass