update with latest upstream changes