First commit. Rough skeleton with some features patched in.