While I like the composability from a readability standpoint, is this creating unnecessary VM GC churn due to needing to maintain immutability of the %Mail{} struct? In other words, would it be better if you could just apply all attributes at once (with one function call, say &quot;put&quot;, that took, say, a Map)? Or does that basically destroy this convention. lol