diff --git a/feeds_ui/feeds_ui.admin.inc b/feeds_ui/feeds_ui.admin.inc
index c9c5f2dc08435425096843338b4cba91673d8ce1..93ea385f3ad9b327ef3e94d80f540519d5c2928e 100644
--- a/feeds_ui/feeds_ui.admin.inc
+++ b/feeds_ui/feeds_ui.admin.inc
@@ -296,7 +296,8 @@ function feeds_ui_edit_page($importer, $active = 'help', $plugin_key = '') {
       $active_container['body'] = drupal_get_form('feeds_ui_plugin_form', $importer, $active);
       break;
     case 'settings':
-      drupal_add_js(drupal_get_path('module', 'feeds_ui') .'/feeds_ui.js');
+      drupal_add_js(drupal_get_path('module', 'ctools') .'/js/dependent.js');
+      ctools_include('dependent');
       if (empty($plugin_key)) {
         $active_container['title'] = t('Basic settings');
         $active_container['body'] = feeds_get_config_form($importer);
diff --git a/feeds_ui/feeds_ui.js b/feeds_ui/feeds_ui.js
index 650b6504af563e4c76bf1f18880844d5cb651072..9908320fde2bb4aa4f11167b97ba9914a186f48b 100644
--- a/feeds_ui/feeds_ui.js
+++ b/feeds_ui/feeds_ui.js
@@ -87,21 +87,4 @@ Drupal.behaviors.feeds = function() {
     $('#' + $(this).attr('id')).attr('checked', 1);
     $('input.form-submit.feeds-ui-hidden-submit').click();
   });
-
-  // Show pubsub settings conditionally.
-  // @todo Generalize dependencies between form elements.
-  if ($('#edit-use-pubsubhubbub').attr('checked')) {
-    $('#edit-designated-hub-wrapper').show();
-  }
-  else {
-    $('#edit-designated-hub-wrapper').hide();
-  }
-  $('#edit-use-pubsubhubbub').click(function() {
-    if ($(this).attr('checked')) {
-      $('#edit-designated-hub-wrapper').show(100);
-    }
-    else {
-      $('#edit-designated-hub-wrapper').hide(100);
-    }
-  });
 };
diff --git a/plugins/FeedsHTTPFetcher.inc b/plugins/FeedsHTTPFetcher.inc
index d55d2b81b28d0c916afc5160501f22ccc916d30e..2cccc9b5d63e42f2298dad1ad099ff24d2ccfe0a 100644
--- a/plugins/FeedsHTTPFetcher.inc
+++ b/plugins/FeedsHTTPFetcher.inc
@@ -122,6 +122,10 @@ class FeedsHTTPFetcher extends FeedsFetcher {
       '#title' => t('Designated hub'),
       '#description' => t('Enter the URL of a designated PubSubHubbub hub (e. g. superfeedr.com). If given, this hub will be used instead of the hub specified in the actual feed.'),
       '#default_value' => $this->config['designated_hub'],
+      '#process' => array('ctools_dependent_process'),
+      '#dependency' => array(
+        'edit-use-pubsubhubbub' => array(1),
+      ),
     );
     return $form;
   }