Yes, i think its too much boilerplate code interspersed between the actual code obfuscating the logic. I have another idea, we can put it back but at the bottom or a new file altogether which does registrations + injects, but i can send that as a new PR for that and you can let this one go in as it will get complicated with all the dependent commits.