merged upstream 2