new update logic