Index: trunk/lib/Text/FormBuilder.pm
===================================================================
--- trunk/lib/Text/FormBuilder.pm	(revision 12)
+++ trunk/lib/Text/FormBuilder.pm	(revision 14)
@@ -87,9 +87,7 @@
     }
 
-##     #TODO: option switch for this
-##     #TODO: goes with CGI::FormBuilder 2.13
-##     foreach (@{ $self->{form_spec}{fields} }) {
-##         $$_{ulist} = 1 if $$_{type} and $$_{type} =~ /checkbox|radio/ and @{ $$_{options} } >= 3;
-##     }
+    foreach (@{ $self->{form_spec}{fields} }) {
+        $$_{ulist} = 1 if defined $$_{options} and @{ $$_{options} } >= 3;
+    }
     
     $self->{form} = CGI::FormBuilder->new(
@@ -107,6 +105,7 @@
             },
             data => {
-                headings => $self->{form_spec}{headings},
-                author   => $self->{form_spec}{author},
+                headings    => $self->{form_spec}{headings},
+                author      => $self->{form_spec}{author},
+                description => $self->{form_spec}{description},
             },
         },
@@ -138,4 +137,5 @@
     my $title = $self->{form_spec}{title} || '';
     my $author = $self->{form_spec}{author} || '';
+    my $description = $self->{form_spec}{description} || '';
     my $headings = Data::Dumper->Dump([$self->{form_spec}{headings}],['headings']);
     my $fields = Data::Dumper->Dump([ [ map { $$_{name} } @{ $self->{form_spec}{fields} } ] ],['fields']);
@@ -176,4 +176,5 @@
                 headings => $headings,
                 author   => q[$author],
+                description => q[$description],
             },
         },
@@ -229,4 +230,5 @@
     th h2 { padding: .125em .5em; background: #eee; }
     th.label { font-weight: normal; text-align: right; vertical-align: top; }
+    td ul { list-style: none; padding-left: 0; margin-left: 0; }
   </style>
 </head>
@@ -235,4 +237,5 @@
 <h1><% $title %></h1>
 <% $author ? qq[<p id="author">Created by $author</p>] : '' %>
+<% $description ? qq[<p id="description">$description</p>] : '' %>
 ] . $self->_form_template . q[
 <hr />
Index: trunk/lib/Text/FormBuilder/grammar
===================================================================
--- trunk/lib/Text/FormBuilder/grammar	(revision 12)
+++ trunk/lib/Text/FormBuilder/grammar	(revision 14)
@@ -1,9 +1,10 @@
-{ my ($title, $author, %lists, %patterns, @fields, @headings, $type, @options, $list_var, $size, $rows, $cols); }
+{ my ($title, $author, $description, %lists, %patterns, @fields, @headings, $type, @options, $list_var, $size, $rows, $cols); }
 
-form_spec: (list_def | line)(s) 
+form_spec: (list_def | description_def | line)(s) 
     {
 	$return = {
 	    title    => $title,
 	    author   => $author,
+	    description => $description,
 	    lists    => \%lists, 
 	    patterns => \%patterns, 
@@ -29,4 +30,11 @@
 
 list_name: /[A-Z_]+/
+
+description_def: '!description' <perl_codeblock>
+    { warn "[Text::FormBuilder] Description redefined at input text line $thisline\n" if defined $description;
+    
+    $description = $item[2];
+    $description =~ s/^{\s*|\s*}$//g;
+    }
 
 line: <skip:'[ \t]*'> ( title | author | pattern_def | heading | field | comment | blank ) "\n"
