only save product if necessary