branched for virtual methods