Refactor: Moved a lot of code around for a cleaner structure. Made Module::Requirements more standalone