updates with immutable objects, generally a more straight forward/cleaner approach