Almost done.  I need to add some documentation and the unittests.