works up to section 4.2