merged latest upstream