Merge master into refactoring branch

Puts this branch in sync with master, so it can be merged
and we can continue working from there