Chapter 3a additions from the paper -- refactored