lots of changes and additions