backport of commit 13a762eabca2d9c6095ef615ead47165f2cc196f