DO NOT MERGE

This is just a pull request to keep track of the changes. Since there are many that need to be squashed, I will make a nicer pull request once everything is done)