Mental model Radoslav Stankov borrows from his React experience and applies to ViewComponent. Layer your components in two tiers: UI components (e.g. a `money` component that renders positive values green, negatives red, zero blue) and domain components (e.g. `product_price`, which takes a Product instance and uses the UI money component plus any domain concerns like discounts). Page-specific things like a page-header are not reusable and don't belong in either tier — they're just components for a single page.