added a proper module management system