This operates over non-const string. Making it const, then use const cast when invoking... isn't that a bit artificial?