Convert controller classes to controller providers
Merging in changes by @GromNaN. Resolves #84.
Revert "Merging in changes by @GromNaN. Resolves #84."

This reverts commit d0be5beaa29dffc220c025ebe935f3394ceaac12, reversing
changes made to c8a68e0f542077e90e492f2f68a9c8d0243d05d0.