Preserve order amid change and change amid order. Languages vary in power and more powerful languages allow things that are possible but not necessarily easy or interesting. Immutable objects are simpler, inherently thread-safe, and make great building blocks. Classes should be immutable unless there is a good reason for mutability. Modeling with immutable values rather than mutable objects avoids many concurrency issues.