refactor regions and add more regions