Functional programming promotes immutable classes and referential transparency. Domain-driven design is composed of Value Object (immutable) and Entities (mutable). Should we create immutable Entities instead of mutable ones? Let's assume, project uses Scala as main language, how could we write Entities as case classes (immutable so) without risking stale status if we're dealing with concurrency?