Cherry-pick obeythepenguin's changes and merge them into main branch