Refactor `update` to reduce wasted lookups