implement base method