merging from upstream

Thank you OptimalBits