This and the next two are basically just a rebase of my patch, so I not Reviewed-by as I can't really be reviewing my own code :) But the rebased versions still look fine to me.