refactoring on region