Checkpoint

Still work in progress, working towards a functional release.