see top-level comment on extent-generating functions and extent-modifying functions