refactor product sync