Index: lib/optparse.rb
===================================================================
--- lib/optparse.rb	(revision 12022)
+++ lib/optparse.rb	(working copy)
@@ -184,6 +184,11 @@
 #           puts OptionParser::Version.join('.')
 #           exit
 #         end
+#
+#         opts.bottom_text <<-EOT
+#
+#         You can add explanatory text as well.
+#         EOT
 #       end
 #       
 #       opts.parse!(args)
@@ -634,8 +639,10 @@
           opt.summarize(*args, &block)
         elsif !opt or opt.empty?
           yield("")
+        elsif opt.respond_to?(:each) 
+          opt.each(&block)
         else
-          opt.each(&block)
+          yield(opt)
         end
       end
     end
@@ -925,6 +932,13 @@
   end
 
   #
+  # Subject of #bottom_text
+  #
+  def bottom
+    @stack[0]
+  end
+
+  #
   # Subject of #on_tail.
   #
   def base
@@ -1219,10 +1233,22 @@
   # Add separator in summary.
   #
   def separator(string)
-    top.append(string, nil, nil)
+      string.split(/\n/).each do |line|
+          top.append(line.chomp, nil, nil)
+      end
   end
+  alias text separator
 
   #
+  # Add text that follows the summary
+  #
+  def bottom_text(string)
+      string.split(/\n/).each do |line|
+          bottom.append(line.chomp, nil, nil)
+      end
+  end
+
+  #
   # Parses command line arguments +argv+ in order. When a block is given,
   # each non-option argument is yielded.
   #
