A lot of changes.  I should document this better