WIP: Component view framework

Odd naming - normally implementations are based on the interface name, this looks the wrong way round.