Added abstract base class