Lots of necessary changes