I've been tinkering with some ideas I've had in the implementation I'm working through. I know that mutability is a first class citizen in SAM, but some UI frameworks (namely react), one can take advantage of immutability and being able to detect changes on the model with a simple equality check. What I've currently set up is a mutation interface, which is just an object with get and set methods. They take the object they intend to operate on, and a path (in the form of an array) of how to get to the property to get/set. I have two implementations of it, one that I wrote, and one that basically wraps seamless-immutable. I'm forcing all the underlying model changes through that interface. That way the application can decide if immutability is important to it or not.