The ID3Metadata class idea came from bitmap or luks (can't remember which). Initially I was not sure why it was better than my previous approach which was just to save whether it was an ID3v23 file as an attribute of Metadata and have conditional code rather than a subclass, but having implemented it, I guess this way is cleaner (though perhaps more difficult to understand without sufficient explanatory comments).