revised StringProcessor