Initial commit.  I believe everything's working, but it could use some
more testing.