Refactor the update interface