Thanks Tim Graham for the review. Backport of 0204714b0bdf10d7558ee106de9a718407f3ec5a from master
Backport of 38c17871bb6dafd489367f6fe8bc56199223adb8 from master