Added an interface, an abstract base class, and two subclasses