Update with callbacks