add factor func