add region support, not well tested