diff -rup WWW-Mechanize-1.30 copy/lib/WWW/Mechanize.pm WWW-Mechanize-1.30 copy 2/lib/WWW/Mechanize.pm
--- WWW-Mechanize-1.30 copy/lib/WWW/Mechanize.pm	2007-07-15 23:35:44.000000000 -0700
+++ WWW-Mechanize-1.30 copy 2/lib/WWW/Mechanize.pm	2007-07-19 22:46:24.000000000 -0700
@@ -501,7 +501,7 @@ sub base {          my $self = shift; re
 sub current_form {
     my $self = shift;
     $self->_extract_forms() unless $self->{_extracted_forms};
-    return $self->{form} = $self->{forms}->[0];
+    return $self->{form} ||= $self->{forms}->[0];
 }
 sub is_html {       my $self = shift; return defined $self->{ct} && ($self->{ct} eq 'text/html'); }
 
@@ -1138,10 +1138,10 @@ sub form_number {
     my ($self, $form) = @_;
     # XXX Should we die if no $form is defined? Same question for form_name()
 
-    $self->_extract_forms() unless $self->{_extracted_forms};
+    my $forms = $self->forms;
 
-    if ($self->{forms}->[$form-1]) {
-        $self->{form} = $self->{forms}->[$form-1];
+    if ($forms->[$form-1]) {
+        $self->{form} = $forms->[$form-1];
         return $self->{form};
     }
     else {
@@ -1168,8 +1168,6 @@ Note that this functionality requires li
 sub form_name {
     my ($self, $form) = @_;
 
-    $self->_extract_forms() unless $self->{_extracted_forms};
-
     my $temp;
     my @matches = grep {defined($temp = $_->attr('name')) and ($temp eq $form) } $self->forms;
     if ( my $nmatches = @matches ) {
@@ -1202,8 +1200,6 @@ sub form_with_fields {
     my ($self, @fields) = @_;
     die 'no fields provided' unless scalar @fields;
 
-    $self->_extract_forms() unless $self->{_extracted_forms};
-
     my @matches;
     FORMS: for my $form (@{ $self->forms }) {
         my @fields_in_form = $form->param();
@@ -1242,8 +1238,7 @@ sub field {
     my ($self, $name, $value, $number) = @_;
     $number ||= 1;
 
-    $self->_extract_forms() unless $self->{_extracted_forms};
-    my $form = $self->{form};
+    my $form = $self->current_form;
     if ($number > 1) {
         $form->find_input($name, undef, $number)->value($value);
     }
@@ -1277,8 +1272,7 @@ undef and calls C<< $self>warn() >> with
 sub select {
     my ($self, $name, $value) = @_;
 
-    $self->_extract_forms() unless $self->{_extracted_forms};
-    my $form = $self->{form};
+    my $form = $self->current_form;
 
     my $input = $form->find_input($name);
     if (!$input) {
@@ -1521,8 +1515,7 @@ sub value {
     my $name = shift;
     my $number = shift || 1;
 
-    $self->_extract_forms() unless $self->{_extracted_forms};
-    my $form = $self->{form};
+    my $form = $self->current_form;
     if ( $number > 1 ) {
         return $form->find_input( $name, undef, $number )->value();
     }
@@ -1548,8 +1541,7 @@ Returns an L<HTTP::Response> object.
 sub click {
     my ($self, $button, $x, $y) = @_;
     for ($x, $y) { $_ = 1 unless defined; }
-    $self->_extract_forms() unless $self->{_extracted_forms};
-    my $request = $self->{form}->click($button, $x, $y);
+    my $request = $self->current_form->click($button, $x, $y);
     return $self->request( $request );
 }
 
@@ -1608,8 +1600,7 @@ sub click_button {
         $_ = 1 unless defined;
     }
 
-    $self->_extract_forms() unless $self->{_extracted_forms};
-    my $form = $self->{form};
+    my $form = $self->current_form;
     my $request;
     if ( $args{name} ) {
         $request = $form->click( $args{name}, $args{x}, $args{y} );
@@ -1648,8 +1639,7 @@ longer so.
 sub submit {
     my $self = shift;
 
-    $self->_extract_forms() unless $self->{_extracted_forms};
-    my $request = $self->{form}->make_request;
+    my $request = $self->current_form->make_request;
     return $self->request( $request );
 }
 
@@ -2544,13 +2534,15 @@ sub _call_handler {
 sub use_plugin {
     my($self, $plugin, @opts) = @_;
     my $plugins = $self->{plugins} ||= {};
+    $plugin =~ s/-/::/g;
     if(exists $plugins->{$plugin}) {
         $plugins->{$plugin}->options(@opts);
     }
     else {
         require "WWW/Mechanize/Plugin/$plugin.pm";
-        $plugins->{$plugin} =
-            "WWW::Mechanize::Plugin::$plugin"->init($self,@opts);
+        ($plugins->{$plugin} =
+            "WWW::Mechanize::Plugin::$plugin"->init($self))
+             ->options(@opts);
     }
     $plugins->{$plugin};
 }
