factorized implementAbstractField