Changes to it all

re-write with comments