backport from em