Initial commit. Untested, and so not ready for use.