diff --git a/features.admin.inc b/features.admin.inc
index ace4a56..46bfdbd 100644
--- a/features.admin.inc
+++ b/features.admin.inc
@@ -142,7 +142,7 @@ function _features_export_form_components(&$form, &$form_state) {
   );
 
   // filter field used in javascript, so javascript will unhide it
-  $form['export']['features_filter'] = array(
+  $form['export']['filter'] = array(
     '#type' => 'textfield',
     '#title' => t('Filter'),
     '#default_value' => '',
@@ -151,6 +151,32 @@ function _features_export_form_components(&$form, &$form_state) {
     '#suffix' => "<span class='features-filter-clear'>" . t('Clear') .
       " </span></div>",
   );
+  $form['export']['features_filter_wrapper'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Filters'),
+    '#tree' => FALSE,
+    '#prefix' => "<div id='features-filter' class='element-invisible'>",
+    '#suffix' => '</div>',
+    '#collapsible' => FALSE,
+    '#collapsed' => FALSE,
+    '#weight' => -10,
+  );
+  $form['export']['features_filter_wrapper']['features_filter'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Filter'),
+    '#hidden' => TRUE,
+    '#default_value' => '',
+    '#suffix' => "<span class='features-filter-clear'>". t('Clear') ."</span>",
+  );
+  $form['export']['features_filter_wrapper']['checkall'] = array(
+    '#type' => 'checkbox',
+    '#default_value' => FALSE,
+    '#hidden' => TRUE,
+    '#title' => t('Select all'),
+    '#attributes' => array(
+      'class' => array('features-checkall'),
+    )
+  );
 
   // this refresh button will rebuild the form.
   // this button is hidden by javascript since it is only needed when
@@ -203,7 +229,6 @@ function _features_export_form_components(&$form, &$form_state) {
         '#attributes' => array('class' => array('features-export-component')),
         '#prefix' => "<div class='features-export-parent component-$component'>",
       );
-
       $form['export'][$component]['sources']['selected'] = array(
         '#type' => 'checkboxes',
         '#id' => "edit-sources-$component_name",
diff --git a/features.js b/features.js
index 088cfe2..f9d1589 100644
--- a/features.js
+++ b/features.js
@@ -128,14 +128,21 @@ jQuery.fn.sortElements = (function(){
       });
 
       function _checkAll(value) {
-        $('#features-export-wrapper .component-select input[type=checkbox]:visible', context).each(function() {
-          if (value) {
-            $(this).attr('checked', 'checked');
-          }
-          else {
-            $(this).removeAttr('checked')
-          }
+        if (value) {
+          $('#features-export-wrapper .component-select input[type=checkbox]:visible', context).each(function() {
+            var move_id = $(this).attr('id');
+            $(this).click();
+            $('#'+ move_id).attr('checked', 'checked');
         });
+        }
+        else {
+          $('#features-export-wrapper .component-added input[type=checkbox]:visible', context).each(function() {
+            var move_id = $(this).attr('id');
+            $('#'+ move_id).removeAttr('checked');
+            $(this).click();
+            $('#'+ move_id).removeAttr('checked');
+          });
+        }
       }
 
       function moveCheckbox(item, section, value) {
@@ -200,7 +207,7 @@ jQuery.fn.sortElements = (function(){
         // the auto-detected items
         var items = [];  // will contain a list of selected items exported to feature
         var components = {};  // contains object of component names that have checked items
-        $('#features-export-wrapper input[type=checkbox]:checked', context).each(function() {
+        /*$('#features-export-wrapper  .component-select input[type=checkbox]:checked', context).each(function() {
           var key = $(this).attr('name');
           var matches = key.match(/^([^\[]+)(\[.+\])?\[(.+)\]\[(.+)\]$/);
           components[matches[1]] = matches[1];
@@ -246,7 +253,7 @@ jQuery.fn.sortElements = (function(){
               }
             }
           }
-        }, "json");
+        }, "json");*/
       }
 
       // Handle component selection UI
@@ -270,10 +277,14 @@ jQuery.fn.sortElements = (function(){
 
       // Handle select/unselect all
       $('#features-filter .features-checkall', context).click(function() {
-        _checkAll( true);
-      });
-      $('#features-filter .features-uncheckall', context).click(function() {
-        _checkAll( false);
+        if ($(this).attr('checked')) {
+          _checkAll(true);
+          $(this).next().html(Drupal.t('Deselect all'));
+        }
+        else {
+          _checkAll(false);
+          $(this).next().html(Drupal.t('Select all'));
+        }
       });
 
       // Handle filtering
