handle concave boundary