always buffer FileOutputStreams
add in-memory output provider that produces a tree of String results
basic implementation of PDF renderer