initial commit.  Tests pass, but still a big Work In Progress