higher-order components must provide
- easily extensible layouts
- good default components
- mechanisms to control default components
- easily extensible/swappable components
providing a "free" high-level tree of components whilst offering low-level extensibility can