Adds and fixes up many changes