more refactoring: StringStreamer