update logic final final