improved virtuals functionality in base class