pulled out region methods into their own module