Initial version.  Still a work in progress.