It seems these features are causing StringWriter to change all the time.
Should we use chain of responsibility pattern to fix this here.