adding utility area function and smarter caching of area_points