Model Interface separate from Component

Only Components with "data" have
models

Separate Model per data abstraction
Shared where possible

Default model
implementation
inside Component