Index: trunk/Makefile.PL
===================================================================
--- trunk/Makefile.PL	(revision 5)
+++ trunk/Makefile.PL	(revision 7)
@@ -8,7 +8,5 @@
     EXE_FILES         => [ 'bin/fb.pl' ],
     PREREQ_PM         => { 
-                            Parse::RecDescent => 1.94,
                             CGI::FormBuilder => 2.12,
-                            YAML => 0.35,
                          }, # e.g., Module::Name => 1.1
     ($] >= 5.005 ?     ## Add these new keywords supported since 5.005
Index: trunk/bin/fb-cgi.pl
===================================================================
--- trunk/bin/fb-cgi.pl	(revision 5)
+++ trunk/bin/fb-cgi.pl	(revision 7)
@@ -12,16 +12,20 @@
 my $form = $parser->parse($src_file)->build(method => 'POST', params => $q)->form;
 
-if ($form->submitted && $form->validate) {
-    # TODO:
+if (1 or $form->submitted && $form->validate) {
+
     # call storage function
+
     my $plugin = 'DumpParams';
+    
     eval "use $plugin;";
-    
-    if ($plugin->process($q)) {
+    die "Can't use $plugin; $@" if $@;
+    die "Plugin $plugin doesn't know how to process" unless $plugin->can('process');
+
+    # plugin process method should return a true value
+    if ($plugin->process($q, $form)) {
         # show thank you page
-        #print $q->header('text/plain');
-        #print "Thank you for your input!\n"
     } else {
         # there was an error processing the results
+        die "There was an error processing the submission: " . $plugin->error;
     }
     
Index: trunk/lib/Text/FormBuilder.pm
===================================================================
--- trunk/lib/Text/FormBuilder.pm	(revision 5)
+++ trunk/lib/Text/FormBuilder.pm	(revision 7)
@@ -4,9 +4,8 @@
 use warnings;
 
-our $VERSION = '0.01';
+our $VERSION = '0.02';
 
 use Text::FormBuilder::Parser;
 use CGI::FormBuilder;
-use YAML;
 
 sub new {
@@ -153,5 +152,12 @@
 }
 
-sub _dump { print YAML::Dump(shift->{form_spec}); }
+sub dump { 
+    eval "use YAML;";
+    unless ($@) {
+        print YAML::Dump(shift->{form_spec});
+    } else {
+        warn "Can't dump form spec structure: $@";
+    }
+}
 
 
@@ -170,5 +176,5 @@
     # returns a new CGI::FormBuilder object with the fields
     # from the input form spec
-    my $form = $parser->build_form;
+    my $form = $parser->form;
 
 =head1 DESCRIPTION
@@ -178,11 +184,40 @@
 =head2 parse
 
+    $parser->parse($src_file);
+    
+    # or as a class method
+    my $parser = Txt::FormBuilder->parse($src_file);
+
+=head2 parse_text
+
 =head2 build
 
+Options passed to build are passed on verbatim to the L<CGI::FormBuilder>
+constructor. Any options given here override the defaults that this module
+uses.
+
+=head2 form
+
+    my $form = $parser->form;
+
+Returns the L<CGI::FormBuilder> object.
+
 =head2 write
 
+    $parser->write($out_file);
+    # or just print to STDOUT
+    $parser->write;
+
+Calls C<render> on the FormBuilder form, and either writes the resulting HTML
+to a file, or to STDOUT if no filename is given.
+
+=head2 dump
+
+Uses L<YAML> to print out a human-readable representaiton of the parsed
+form spec.
+
 =head1 LANGUAGE
 
-    name[size]|descriptive label[hint]:type=default{option1(display string),option2(display string),...}//validate
+    name[size]|descriptive label[hint]:type=default{option1[display string],option2[display string],...}//validate
     
     !title ...
@@ -190,6 +225,6 @@
     !pattern name /regular expression/
     !list name {
-        option1(display string),
-        option2(display string),
+        option1[display string],
+        option2[display string],
         ...
     }
@@ -204,4 +239,6 @@
 
 =item C<!title>
+
+=item C<!author>
 
 =back
@@ -220,4 +257,12 @@
 Any line beginning with a C<#> is considered a comment.
 
+=head1 TODO
+
+=head2 Langauge
+
+Directive for a descriptive or explanatory paragraph about the form
+
+Subsection headers?
+
 =head1 SEE ALSO
 
