implemented base class