Manual merge of master

Conflicts were ones I created within setup.py.