Refactor controller and depinject

Adds a MustRegister method to make registration easier.

Refactors the response objects to be more consistent