I disagree with many of the choices in this series (for example, I think casting an interface pointer to an inherited interface is fine, and replacing that with QueryInterface just adds unnecessary additional logic), but I don't think any semantics have been changed and overall it's a good cleanup.