refactor region and added prototypical methods