Lots of changes and additions.