Refacto update()