Lots of changes and additions