changes from upstream, yet to be polished blue