Intial commit of real code.  3 tests passing so far, lots of duplication and
cleanup necessary.