lots of changes and lots left out