This adds two user-facing changes:
master
There are various refactorings involved as well. Read the commit messages for more detail!