change to use angular, add region support