* When a problem occurs varying data structures is easier than varying logic
workflow structures.
* Data Transfer Objects should be coarse grained and contain no logic.
* Immutable data objects promote isolation, predictability, and readability.
* Logic structures should avoid inheritance as much as possible and use a
composition workflow logic structure. The