First big commit.  Tests working.