<p>Simplistic protocols and models and language features can end up becoming <em>complexity multipliers</em> because the complexity is duplicated by each and every <em>user</em> of the model or protocol. They are also effort multipliers. Fortunately, one can sometimes solve this problem by wrapping or refactoring the protocol or model or language feature within a library to utilize it, thus capturing the Essential Complexity into the library and thus creating the feature/language/model that should have existed in the first place. </p>