Major pivot. I realized that I was A) over-engineering things a bit and B) repeating existing functionality. So now, each module boils down to Module, Controller, Router and Config files. The Router is shared, as its functionality is repeated over and over again, and the Controller extends from a shared file, allowing developers to set their route controller as well as extend the controller with more functionality