extract overridable method