refactoring for delegate the responsability to EnumFunction this way we dont need to change AssociationFunction implementation