Pushing rework.  Need to continue cleaning up the code so that once it
is finished it will be easy to read.