Moving most of the work to the base class.