The way modules are currently loaded is archaic and error-prone and currently makes reloading modules very tricky
There are already existing modules that can handle this dirty work for us and provide more more user friendly interfaces of loading custom code
We should use Module::Pluggable as a starting point this will likely require refactoring the existing modules to use the new interface but it should be fairly seamless