Here is the plan: 1. First we discuss some problems, requiring boilerplate, macro-converters, or loose typing. 2. We describe what HKD is, how it transforms into different data shapes. 3. Here go fancy typeclasses. We define a small hierarchy useful for HKD, and reference to a library, that could derive them automatically (tofu module) 4. We discuss shapes from p2. more deeply, turning them into design pattern implementations, while using previously defined typeclasses. 5. We discuss how to infer ordinary typeclasses for HKD, providing a more general and strict form of magnolia-like derivation for case classes.