update and push preference