Various suggestions for improvement

The main change is moving from 4 controller providers to one controller class and one controller provider. I feel it's quite a lot simpler this way.

Cherry-pick commits as you wish. ;-)