Moved base functionality into concrete classes that implement common interfaces.