backport from parent project