Initial commit - not much to say.

Mostly thinking about how to modularise different components.