V3. No changes since v2, I only updated commit messages in patches 1, 2, 3 and 6. I think we should try to avoid needless squashing and keep these as-is for now. We can always condense some of this later on in case we need to reduce number of individual patches for some reason.