It may be early a bit; I need to note it here before I forget about them:
We're currently printing to a StringIO as the underlying buffer. We're re-creating a lot of the methods of I/O, exposing them for external use.
We may want to use Forwardable and delegate some methods; it's cleaner.