base class implemented