better add_preference