don't force subclasses to override function if not necessary