lots of changes and data manipulation