In this class we only have changes which allow the extended classes to take better use of this code, and reduce duplication.