2.9.x

review by @jsuereth