Reorganized the modules to seperate functionality