diff --git a/multipage/multipage.js b/multipage/multipage.js
index 321d95d..ca6ee0c 100644
--- a/multipage/multipage.js
+++ b/multipage/multipage.js
@@ -1,7 +1,7 @@
 (function ($) {
 
 /**
- * This script transforms a set of wrappers into a stack of multipage pages. 
+ * This script transforms a set of wrappers into a stack of multipage pages.
  * Another pane can be entered by clicking next/previous.
  *
  */
@@ -19,28 +19,17 @@ Drupal.behaviors.MultiPage = {
         return;
       }
 
-      // Create the next/previous controls.
-      var $controls;
-
       // Transform each div.multipage-pane into a multipage with controls.
       $panes.each(function () {
-        
-        $controls = $('<div class="multipage-controls-list clearfix"></div>');
-        $(this).append($controls);
-        
-        // Check if the submit button needs to move to the latest pane.
-        if (Drupal.settings.field_group.multipage_move_submit && $('.form-actions').length) {
-          $('.form-actions', $form).remove().appendTo($($controls, $panes.last()));
-        }
-        
+        $(this).append('<div class="multipage-controls clearfix"></div>');
+
         var multipageControl = new Drupal.multipageControl({
           title: $('> .multipage-pane-title', this).text(),
           wrapper: $(this),
           has_next: $(this).next().length,
           has_previous: $(this).prev().length
         });
-        
-        $controls.append(multipageControl.item);
+
         $(this)
           .addClass('multipage-pane')
           .data('multipageControl', multipageControl);
@@ -48,7 +37,6 @@ Drupal.behaviors.MultiPage = {
         if (this.id == focusID) {
           paneWithFocus = $(this);
         }
-        
       });
 
       if (paneWithFocus === undefined) {
@@ -78,19 +66,20 @@ Drupal.behaviors.MultiPage = {
  */
 Drupal.multipageControl = function (settings) {
   var self = this;
-  var controls = Drupal.theme('multipage', settings);
-  $.extend(self, settings, controls);
+  $.extend(this, settings);
+
+  this.addControls();
 
-  this.nextLink.click(function () {
+  this.wrapper.delegate('.multipage-link-next', 'click', function () {
     self.nextPage();
     return false;
   });
-  
-  this.previousLink.click(function () {
+
+  this.wrapper.delegate('.multipage-link-previous', 'click', function () {
     self.previousPage();
     return false;
   });
-  
+
 /*
   // Keyboard events added:
   // Pressing the Enter key will open the tab pane.
@@ -116,7 +105,18 @@ Drupal.multipageControl = function (settings) {
 };
 
 Drupal.multipageControl.prototype = {
-    
+
+  /**
+   * Add this control's widgets to the pane, or replace them
+   * if they already exist.
+   */
+  addControls: function () {
+    $controls = Drupal.theme('multipage', { has_next: this.has_next, has_previous: this.has_previous });
+    $.extend(this, $controls);
+    this.wrapper.find('.multipage-controls-list').remove();
+    this.wrapper.append($('<div class="multipage-controls-list"></div>').append($controls.item));
+  },
+
   /**
    * Displays the tab's content pane.
    */
@@ -131,11 +131,12 @@ Drupal.multipageControl.prototype = {
         .end()
       .siblings(':hidden.multipage-active-control')
         .val(this.wrapper.attr('id'));
+
     // Mark the active control for screen readers.
     $('#active-multipage-control').remove();
     this.nextLink.after('<span id="active-multipage-control" class="element-invisible">' + Drupal.t('(active page)') + '</span>');
   },
-  
+
   /**
    * Continues to the next page or step in the form.
    */
@@ -143,7 +144,7 @@ Drupal.multipageControl.prototype = {
     this.wrapper.next().data('multipageControl').focus();
     $('html, body').scrollTop(this.wrapper.parents('.field-group-multipage-group-wrapper').offset().top);
   },
-  
+
   /**
    * Returns to the previous page or step in the form.
    */
@@ -221,6 +222,9 @@ Drupal.theme.prototype.multipage = function (settings) {
   
   if (!settings.has_next) {
     controls.nextLink.hide();
+    if (Drupal.settings.field_group.multipage_move_submit && $('.form-actions').length) {
+      controls.item.append($('.form-actions', $form).remove());
+    }
   }
   if (!settings.has_previous) {
     controls.previousLink.hide();
