merging current upstream code