synchronized with upstream