1.2 Pull request

I know we'd like to do features in different pull requests, but I'd like to do this giant one first, then we can do them one at a time after this