I'm coming back to this, and more and more I'm thinking that tag handling should be left to the caller. The default behavior is to do nothing to tags (to preserve signing, etc) – not even backing them up. If the caller wants to rewrite them, they're completely able to.