replaced old base class implementation