Immutable models, first-class changesets, value-based programming
records - frozen / immutable structs with copy on updates
Immutable representations of database entities
When using the class method `attributes` in a class you get: - an initialize method with attributes as kwd params and the respective defaults - immutable instances - a to_h method using all attributes - an update method to create new imutable instances - a destruct_keys method aliased to to_h for pattern matching