provide an interface to access generated output more as a stream

It's faster to make `@total_out`, a list, and then push to it and return its `join(''`.