Should really be a StringBuilder, but that's not really to do with this pull request!