When do you suppose the code could simply return a Features object instead of re-encoding this back into a string to pass it through the code that parses that into the Features object?  Was this done to preserve back-compat?