Update objects without mutating the original