lots of code changes