Introduce abstract base class