[Hal E. Fulton] > Suppose I want to follow an H1 > header with an H2 header. Fine... > > cgi.out do > cgi.html do > cgi.body do > cgi.h1 { "Larger header" } + > cgi.h2 { "Smaller header" } > end > end > end ... > Couldn't it have been written in such > a way that output would have been > done as we went along, or at least > collected as we went along? I agree that this is not very good... it is too easy to forget the '+'. But outputting the data directly is not very good either... you may want to postprocess the data or (for example) write it to a database. Also, I do not think that HTML generation really belongs in the CGI class. But I do like the idea of using ruby blocks to indicate tag nesting. I think a nice design would be something like this: h = HTML.new('HTML3', [:lower_case, :pretty]) h.html { h.body { h.h1('Larger header') h.h2('Smaller header') } } cgi.out(h.to_s) The #body, #h1 and #h2 methods would append their data to the h object. Do you agree or would you rather see something else? Is HTML a good class name or would HTMLGeneration be better? It is easy enough to code up once the interface is decided. // Niklas