First commit.  Still needs cleanup.