Push first version of this.

Signed-off-by: Chris Lamb <chris@chris-lamb.co.uk>
Smaller.

Signed-off-by: Chris Lamb <chris@chris-lamb.co.uk>