broke down regions in modules, refactor some region code