diff --git a/handlers/views_handler_area_text.inc b/handlers/views_handler_area_text.inc
index f2d2870..ef2fcff 100644
--- a/handlers/views_handler_area_text.inc
+++ b/handlers/views_handler_area_text.inc
@@ -73,11 +73,13 @@ class views_handler_area_text extends views_handler_area {
         '#collapsed' => TRUE,
         '#value' => $output,
         '#id' => 'edit-options-token-help',
-        '#dependency' => array(
-          'edit-options-tokenize' => array(1),
+        '#states' => array(
+          'visible' => array(
+            ':input[name="options[tokenize]"]' => array('checked' => TRUE),
+          ),
         ),
-        '#prefix' => '<div>',
-        '#suffix' => '</div>',
+//        '#prefix' => '<div>',
+//        '#suffix' => '</div>',
       );
     }
   }
diff --git a/handlers/views_handler_argument.inc b/handlers/views_handler_argument.inc
index 8e46bf3..3a0cd8d 100644
--- a/handlers/views_handler_argument.inc
+++ b/handlers/views_handler_argument.inc
@@ -269,8 +269,13 @@ class views_handler_argument extends views_handler {
       '#size' => 20,
       '#default_value' => $this->options['exception']['title'],
       '#description' => t('Override the view and other argument titles. Use "%1" for the first argument, "%2" for the second, etc.'),
-      '#dependency' => array(
-        'edit-options-exception-title-enable' => array('1'),
+//      '#dependency' => array(
+//        'edit-options-exception-title-enable' => array('1'),
+//      ),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="options[title_enable]"]' => array('checked' => TRUE),
+        ),
       ),
     );
 
@@ -304,8 +309,13 @@ class views_handler_argument extends views_handler {
       '#title_display' => 'invisible',
       '#default_value' => $this->options['title'],
       '#description' => t('Override the view and other argument titles. Use "%1" for the first argument, "%2" for the second, etc.'),
-      '#dependency' => array(
-        'edit-options-title-enable' => array('1'),
+//      '#dependency' => array(
+//        'edit-options-title-enable' => array('1'),
+//      ),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="options[title_enable]"]' => array('checked' => TRUE),
+        ),
       ),
       '#fieldset' => 'argument_present',
     );
@@ -322,8 +332,13 @@ class views_handler_argument extends views_handler {
       '#title_display' => 'invisible',
       '#default_value' => $this->options['breadcrumb'],
       '#description' => t('Enter a breadcrumb name you would like to use. See "Title" for percent substitutions.'),
-      '#dependency' => array(
-        'edit-options-breadcrumb-enable' => array('1'),
+//      '#dependency' => array(
+//        'edit-options-breadcrumb-enable' => array('1'),
+//      ),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="options[breadcrumb_enable]"]' => array('checked' => TRUE),
+        ),
       ),
       '#fieldset' => 'argument_present',
     );
@@ -345,8 +360,13 @@ class views_handler_argument extends views_handler {
       '#type' => 'select',
       '#title' => t('Validator'),
       '#default_value' => $this->options['validate']['type'],
-      '#dependency' => array(
-        'edit-options-specify-validation' => array('1'),
+//      '#dependency' => array(
+//        'edit-options-specify-validation' => array('1'),
+//      ),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="options[specify_validation]"]' => array('checked' => TRUE),
+        ),
       ),
     );
 
@@ -404,8 +424,13 @@ class views_handler_argument extends views_handler {
       '#title' => t('Action to take if filter value does not validate'),
       '#default_value' => $this->options['validate']['fail'],
       '#options' => $validate_options,
-      '#dependency' => array(
-        'edit-options-specify-validation' => array('1'),
+//      '#dependency' => array(
+//        'edit-options-specify-validation' => array('1'),
+//      ),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="options[specify_validation]"]' => array('checked' => TRUE),
+        ),
       ),
       '#fieldset' => 'argument_present',
     );
diff --git a/handlers/views_handler_argument_string.inc b/handlers/views_handler_argument_string.inc
index dbb98fe..fbe5469 100644
--- a/handlers/views_handler_argument_string.inc
+++ b/handlers/views_handler_argument_string.inc
@@ -57,7 +57,11 @@ class views_handler_argument_string extends views_handler_argument {
       '#title' => t('Character limit'),
       '#description' => t('How many characters of the filter value to filter against. If set to 1, all fields starting with the first letter in the filter value would be matched.'),
       '#default_value' => $this->options['limit'],
-      '#dependency' => array('edit-options-glossary' => array(TRUE)),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="options[glossary]"]' => array('checked' => TRUE),
+        ),
+      ),
       '#fieldset' => 'more',
     );
 
diff --git a/handlers/views_handler_field_custom.inc b/handlers/views_handler_field_custom.inc
index 66586de..7d3459e 100644
--- a/handlers/views_handler_field_custom.inc
+++ b/handlers/views_handler_field_custom.inc
@@ -29,10 +29,8 @@ class views_handler_field_custom extends views_handler_field {
 
     // Remove the checkbox
     unset($form['alter']['alter_text']);
-    unset($form['alter']['text']['#dependency']);
-    unset($form['alter']['text']['#process']);
-    unset($form['alter']['help']['#dependency']);
-    unset($form['alter']['help']['#process']);
+    unset($form['alter']['text']['#states']);
+    unset($form['alter']['help']['#states']);
     $form['#pre_render'][] = 'views_handler_field_custom_pre_render_move_text';
   }
 
diff --git a/handlers/views_handler_field_date.inc b/handlers/views_handler_field_date.inc
index 8f3fe39..293f3e9 100644
--- a/handlers/views_handler_field_date.inc
+++ b/handlers/views_handler_field_date.inc
@@ -49,6 +49,15 @@ class views_handler_field_date extends views_handler_field {
       '#description' => t('If "Custom", see <a href="http://us.php.net/manual/en/function.date.php" target="_blank">the PHP docs</a> for date formats. Otherwise, enter the number of different time units to display, which defaults to 2.'),
       '#default_value' => isset($this->options['custom_date_format']) ? $this->options['custom_date_format'] : '',
       '#dependency' => array('edit-options-date-format' => array('custom', 'raw time ago', 'time ago', 'raw time hence', 'time hence', 'raw time span', 'time span', 'raw time span', 'inverse time span', 'time span')),
+//      '#states' => array(
+//        'visible' => array(
+//          array(
+//            ':input[name="options[date_format]"]' => array('value' => 'raw time ago'),
+//            'xor',
+//            ':input[name="options[date_format]"]' => array('value' => 'custom'),
+//          ),
+//        ),
+//      ),
     );
 
     parent::options_form($form, $form_state);
diff --git a/handlers/views_handler_field_math.inc b/handlers/views_handler_field_math.inc
index 08fba06..3172be9 100644
--- a/handlers/views_handler_field_math.inc
+++ b/handlers/views_handler_field_math.inc
@@ -36,7 +36,7 @@ class views_handler_field_math extends views_handler_field_numeric {
 
     // Then move the existing help:
     $form['expression_help'] = $form['alter']['help'];
-    unset($form['expression_help']['#dependency']);
+    unset($form['expression_help']['#states']);
     unset($form['alter']['help']);
   }
 
diff --git a/handlers/views_handler_field_numeric.inc b/handlers/views_handler_field_numeric.inc
index d10d3d0..eb2a53b 100644
--- a/handlers/views_handler_field_numeric.inc
+++ b/handlers/views_handler_field_numeric.inc
@@ -44,7 +44,11 @@ class views_handler_field_numeric extends views_handler_field {
         '#title' => t('Precision'),
         '#default_value' => $this->options['precision'],
         '#description' => t('Specify how many digits to print after the decimal point.'),
-        '#dependency' => array('edit-options-set-precision' => array(TRUE)),
+        '#states' => array(
+          'visible' => array(
+            ':input[name="options[set_precision]"]' => array('checked' => TRUE),
+          ),
+        ),
         '#size' => 2,
       );
       $form['decimal'] = array(
@@ -80,14 +84,22 @@ class views_handler_field_numeric extends views_handler_field {
       '#title' => t('Singular form'),
       '#default_value' => $this->options['format_plural_singular'],
       '#description' => t('Text to use for the singular form.'),
-      '#dependency' => array('edit-options-format-plural' => array(TRUE)),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="options[format_plural]"]' => array('checked' => TRUE),
+        ),
+      ),
     );
     $form['format_plural_plural'] = array(
       '#type' => 'textfield',
       '#title' => t('Plural form'),
       '#default_value' => $this->options['format_plural_plural'],
       '#description' => t('Text to use for the plural form, @count will be replaced with the value.'),
-      '#dependency' => array('edit-options-format-plural' => array(TRUE)),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="options[format_plural]"]' => array('checked' => TRUE),
+        ),
+      ),
     );
     $form['prefix'] = array(
       '#type' => 'textfield',
diff --git a/handlers/views_handler_field_prerender_list.inc b/handlers/views_handler_field_prerender_list.inc
index 00a571a..53e1f99 100644
--- a/handlers/views_handler_field_prerender_list.inc
+++ b/handlers/views_handler_field_prerender_list.inc
@@ -51,7 +51,11 @@ class views_handler_field_prerender_list extends views_handler_field {
       '#type' => 'textfield',
       '#title' => t('Separator'),
       '#default_value' => $this->options['separator'],
-      '#dependency' => array('radio:options[type]' => array('separator')),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="options[type]"]' => array('value' => 'separator'),
+        ),
+      ),
     );
     parent::options_form($form, $form_state);
   }
diff --git a/handlers/views_handler_field_serialized.inc b/handlers/views_handler_field_serialized.inc
index 1579fce..ef432b4 100644
--- a/handlers/views_handler_field_serialized.inc
+++ b/handlers/views_handler_field_serialized.inc
@@ -38,7 +38,11 @@ class views_handler_field_serialized extends views_handler_field {
       '#type' => 'textfield',
       '#title' => t('Which key should be displayed'),
       '#default_value' => $this->options['key'],
-      '#dependency' => array('edit-options-format' => array('key')),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="options[format]"]' => array('value' => 'key'),
+        ),
+      ),
     );
   }
 
diff --git a/handlers/views_handler_filter.inc b/handlers/views_handler_filter.inc
index b8c6ac1..3db9d86 100644
--- a/handlers/views_handler_filter.inc
+++ b/handlers/views_handler_filter.inc
@@ -357,8 +357,11 @@ class views_handler_filter extends views_handler {
         '#title' => t('Operator identifier'),
         '#size' => 40,
         '#description' => t('This will appear in the URL after the ? to identify this operator.'),
-        '#dependency' => array(
-          'edit-options-expose-use-operator' => array(1)
+        // @todo: the checkbox is outside but the textfield is inside of the fieldset?
+        '#states' => array(
+          'visible' => array(
+            ':input[name="options[expose][use_operator]"]' => array('checked' => TRUE),
+          ),
         ),
         '#fieldset' => 'more',
       );
diff --git a/includes/admin.inc b/includes/admin.inc
index b79a87c..a06e97d 100644
--- a/includes/admin.inc
+++ b/includes/admin.inc
@@ -333,8 +333,10 @@ function views_ui_add_form($form, &$form_state) {
     '#title_display' => 'invisible',
     '#size' => 64,
     '#default_value' => !empty($form_state['view']) ? $form_state['view']->description : '',
-    '#dependency' => array(
-      'edit-description-enable' => array(1),
+    '#states' => array(
+      'visible' => array(
+        ':input[name="description_enable"]' => array('checked' => TRUE),
+      ),
     ),
   );
 
@@ -1008,9 +1010,11 @@ function views_ui_edit_form($form, &$form_state, $view, $display_id = NULL) {
   $form['#attached']['library'][] = array('system', 'ui.dialog');
   $form['#attached']['library'][] = array('system', 'drupal.ajax');
   $form['#attached']['library'][] = array('system', 'jquery.form');
+  $form['#attached']['library'][] = array('system', 'drupal.states');
   // TODO: This should be getting added to the page when an ajax popup calls
   // for it, instead of having to add it manually here.
-  $form['#attached']['js'][] = 'misc/tabledrag.js';
+  // @TODO: Figure out why this is not a library.
+  $form['#attached']['js'][] = 'core/misc/tabledrag.js';
 
   $form['#attached']['css'] = views_ui_get_admin_css();
   $module_path = drupal_get_path('module', 'views_ui');
@@ -4743,24 +4747,37 @@ function views_ui_admin_settings_basic() {
       'above' => t('Above the preview'),
       'below' => t('Below the preview'),
     ),
-    '#id' => 'edit-show-sql',
+//    '#id' => 'edit-show-sql',
     '#default_value' => variable_get('views_ui_show_sql_query_where', 'above'),
-    '#dependency' => array('edit-views-ui-show-preview-information' => array(TRUE)),
-    '#prefix' => '<div id="edit-show-sql-wrapper" class="views-dependent">',
-    '#suffix' => '</div>',
+//    '#dependency' => array('edit-views-ui-show-preview-information' => array(TRUE)),
+    '#states' => array(
+      'visible' => array(
+        ':input[name="views_ui_show_preview_information"]' => array('checked' => TRUE),
+      ),
+    ),
+//    '#prefix' => '<div id="edit-show-sql-wrapper" class="views-dependent">',
+//    '#suffix' => '</div>',
   );
 
   $form['live_preview']['views_ui_show_sql_query'] = array(
     '#type' => 'checkbox',
     '#title' => t('Show the SQL query'),
     '#default_value' => variable_get('views_ui_show_sql_query', FALSE),
-    '#dependency' => array('edit-views-ui-show-preview-information' => array(TRUE)),
+    '#states' => array(
+      'visible' => array(
+        ':input[name="views_ui_show_preview_information"]' => array('checked' => TRUE),
+      ),
+    ),
   );
   $form['live_preview']['views_ui_show_performance_statistics'] = array(
     '#type' => 'checkbox',
     '#title' => t('Show performance statistics'),
     '#default_value' => variable_get('views_ui_show_performance_statistics', FALSE),
-    '#dependency' => array('edit-views-ui-show-preview-information' => array(TRUE)),
+    '#states' => array(
+      'visible' => array(
+        ':input[name="views_ui_show_preview_information"]' => array('checked' => TRUE),
+      ),
+    ),
   );
 
   $form['live_preview']['views_show_additional_queries'] = array(
@@ -4768,7 +4785,11 @@ function views_ui_admin_settings_basic() {
     '#title' => t('Show other queries run during render during live preview'),
     '#description' => t("Drupal has the potential to run many queries while a view is being rendered. Checking this box will display every query run during view render as part of the live preview."),
     '#default_value' => variable_get('views_show_additional_queries', FALSE),
-    '#dependency' => array('edit-views-ui-show-preview-information' => array(TRUE)),
+    '#states' => array(
+      'visible' => array(
+        ':input[name="views_ui_show_preview_information"]' => array('checked' => TRUE),
+      ),
+    ),
   );
 
 //  $form['live_preview']['views_ui_show_performance_statistics_where'] = array(
@@ -4853,7 +4874,11 @@ function views_ui_admin_settings_advanced() {
     '#title' => t('Page region to output performance statistics/debug messages'),
     '#default_value' => variable_get('views_devel_region', 'footer'),
     '#options' => $regions,
-    '#dependency' => array('edit-views-devel-output' => array(1)),
+    '#states' => array(
+      'visible' => array(
+        ':input[name="views_devel_output"]' => array('checked' => TRUE),
+      ),
+    ),
   );
 
   $options = views_fetch_plugin_names('display_extender');
diff --git a/includes/plugins.inc b/includes/plugins.inc
index a948d58..8732ec6 100644
--- a/includes/plugins.inc
+++ b/includes/plugins.inc
@@ -24,7 +24,8 @@ function views_views_plugins() {
         'theme' => 'views_view',
         'no ui' => TRUE,
         'no remove' => TRUE,
-        'js' => array('misc/form.js', 'misc/collapse.js', 'misc/textarea.js', 'misc/tabledrag.js', 'misc/autocomplete.js', "$js_path/dependent.js"),
+        // @todo: replace this with proper libraries.
+        'js' => array('core/misc/form.js', 'core/misc/collapse.js', 'core/misc/textarea.js', 'core/misc/tabledrag.js', 'misc/autocomplete.js', "$js_path/dependent.js"),
         'use ajax' => TRUE,
         'use pager' => TRUE,
         'use more' => TRUE,
diff --git a/modules/node/views_plugin_argument_validate_node.inc b/modules/node/views_plugin_argument_validate_node.inc
index 018965d..14d5cd6 100644
--- a/modules/node/views_plugin_argument_validate_node.inc
+++ b/modules/node/views_plugin_argument_validate_node.inc
@@ -44,7 +44,12 @@ class views_plugin_argument_validate_node extends views_plugin_argument_validate
       '#title' => t('Access operation to check'),
       '#options' => array('view' => t('View'), 'update' => t('Edit'), 'delete' => t('Delete')),
       '#default_value' => $this->options['access_op'],
-      '#dependency' => array('edit-options-validate-options-node-access' => array(TRUE)),
+//      '#dependency' => array('edit-options-validate-options-node-access' => array(TRUE)),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="options[validate][options][user][access]"]' => array('checked' => TRUE),
+        ),
+      ),
     );
 
     $form['nid_type'] = array(
diff --git a/modules/taxonomy/views_handler_argument_term_node_tid_depth.inc b/modules/taxonomy/views_handler_argument_term_node_tid_depth.inc
index 116a4de..5b0b34d 100644
--- a/modules/taxonomy/views_handler_argument_term_node_tid_depth.inc
+++ b/modules/taxonomy/views_handler_argument_term_node_tid_depth.inc
@@ -52,7 +52,11 @@ class views_handler_argument_term_node_tid_depth extends views_handler_argument
       '#title' => t("Use Drupal's taxonomy term path to create breadcrumb links"),
       '#description' => t('If selected, the links in the breadcrumb trail will be created using the standard drupal method instead of the custom views method. This is useful if you are using modules like taxonomy redirect to modify your taxonomy term links.'),
       '#default_value' => !empty($this->options['use_taxonomy_term_path']),
-      '#dependency' => array('edit-options-set-breadcrumb' => array(TRUE)),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="options[set_breadcrumb]"]' => array('checked' => TRUE),
+        ),
+      ),
     );
     parent::options_form($form, $form_state);
   }
diff --git a/modules/taxonomy/views_handler_field_term_node_tid.inc b/modules/taxonomy/views_handler_field_term_node_tid.inc
index 6b9c93a..ca46c1d 100644
--- a/modules/taxonomy/views_handler_field_term_node_tid.inc
+++ b/modules/taxonomy/views_handler_field_term_node_tid.inc
@@ -65,13 +65,16 @@ class views_handler_field_term_node_tid extends views_handler_field_prerender_li
     }
 
     $form['vocabularies'] = array(
-      '#prefix' => '<div><div id="edit-options-vocabularies">',
-      '#suffix' => '</div></div>',
       '#type' => 'checkboxes',
       '#title' => t('Vocabularies'),
       '#options' => $options,
       '#default_value' => $this->options['vocabularies'],
-      '#dependency' => array('edit-options-limit' => array(TRUE)),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="options[limit]"]' => array('checked' => TRUE),
+        ),
+      ),
+
     );
 
     parent::options_form($form, $form_state);
diff --git a/modules/taxonomy/views_handler_filter_term_node_tid.inc b/modules/taxonomy/views_handler_filter_term_node_tid.inc
index e0dd0f9..8945edc 100644
--- a/modules/taxonomy/views_handler_filter_term_node_tid.inc
+++ b/modules/taxonomy/views_handler_filter_term_node_tid.inc
@@ -82,7 +82,11 @@ class views_handler_filter_term_node_tid extends views_handler_filter_many_to_on
       '#type' => 'checkbox',
       '#title' => t('Show hierarchy in dropdown'),
       '#default_value' => !empty($this->options['hierarchy']),
-      '#dependency' => array('radio:options[type]' => array('select')),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="options[type]"]' => array('value' => 'select'),
+        ),
+      ),
     );
   }
 
diff --git a/modules/taxonomy/views_plugin_argument_default_taxonomy_tid.inc b/modules/taxonomy/views_plugin_argument_default_taxonomy_tid.inc
index 65d427b..7ffb595 100644
--- a/modules/taxonomy/views_plugin_argument_default_taxonomy_tid.inc
+++ b/modules/taxonomy/views_plugin_argument_default_taxonomy_tid.inc
@@ -51,9 +51,10 @@ class views_plugin_argument_default_taxonomy_tid extends views_plugin_argument_d
       '#type' => 'checkbox',
       '#title' => t('Limit terms by vocabulary'),
       '#default_value'=> $this->options['limit'],
-      '#process' => array('form_process_checkbox', 'ctools_dependent_process'),
-      '#dependency' => array(
-        'edit-options-argument-default-taxonomy-tid-node' => array(1),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="options[argument_default][taxonomy_tid][node]"]' => array('checked' => TRUE),
+        ),
       ),
     );
 
@@ -64,16 +65,15 @@ class views_plugin_argument_default_taxonomy_tid extends views_plugin_argument_d
     }
 
     $form['vocabularies'] = array(
-      '#prefix' => '<div><div id="edit-options-vids">',
-      '#suffix' => '</div></div>',
       '#type' => 'checkboxes',
       '#title' => t('Vocabularies'),
       '#options' => $options,
       '#default_value' => $this->options['vocabularies'],
-      '#process' => array('form_process_checkboxes', 'ctools_dependent_process'),
-      '#dependency' => array(
-        'edit-options-argument-default-taxonomy-tid-limit' => array(1),
-        'edit-options-argument-default-taxonomy-tid-node' => array(1),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="options[argument_default][taxonomy_tid][limit]"]' => array('checked' => TRUE),
+          ':input[name="options[argument_default][taxonomy_tid][node]"]' => array('checked' => TRUE),
+        ),
       ),
     );
 
@@ -86,8 +86,10 @@ class views_plugin_argument_default_taxonomy_tid extends views_plugin_argument_d
         ',' => t('Filter to items that share all terms'),
         '+' => t('Filter to items that share any term'),
       ),
-      '#dependency' => array(
-        'edit-options-argument-default-taxonomy-tid-node' => array(1),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="options[argument_default][taxonomy_tid][node]"]' => array('checked' => TRUE),
+        ),
       ),
     );
   }
diff --git a/modules/user/views_handler_field_user_name.inc b/modules/user/views_handler_field_user_name.inc
index 5c9bd25..8947db1 100644
--- a/modules/user/views_handler_field_user_name.inc
+++ b/modules/user/views_handler_field_user_name.inc
@@ -50,8 +50,10 @@ class views_handler_field_user_name extends views_handler_field_user {
       '#title' => t('Text to display for anonymous users'),
       '#type' => 'textfield',
       '#default_value' => $this->options['anonymous_text'],
-      '#dependency' => array(
-        'edit-options-overwrite-anonymous' => array(1),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="options[overwrite_anonymous]"]' => array('checked' => TRUE),
+        ),
       ),
       '#fieldset' => 'more',
     );
diff --git a/modules/user/views_plugin_argument_validate_user.inc b/modules/user/views_plugin_argument_validate_user.inc
index f479609..7a3efca 100644
--- a/modules/user/views_plugin_argument_validate_user.inc
+++ b/modules/user/views_plugin_argument_validate_user.inc
@@ -42,14 +42,17 @@ class views_plugin_argument_validate_user extends views_plugin_argument_validate
 
     $form['roles'] = array(
       '#type' => 'checkboxes',
-      '#prefix' => '<div id="edit-options-validate-options-user-roles-wrapper">',
-      '#suffix' => '</div>',
       '#title' => t('Restrict to the selected roles'),
       '#options' => array_map('check_plain', user_roles(TRUE)),
       '#default_value' => $this->options['roles'],
       '#description' => t('If no roles are selected, users from any role will be allowed.'),
-      '#dependency' => array(
-        'edit-options-validate-options-user-restrict-roles' => array(1),
+//      '#dependency' => array(
+//        'edit-options-validate-options-user-restrict-roles' => array(1),
+//      ),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="options[validate][options][user][restrict_roles]"]' => array('checked' => TRUE),
+        ),
       ),
     );
   }
diff --git a/plugins/views_plugin_cache_time.inc b/plugins/views_plugin_cache_time.inc
index 53123a3..8a28108 100644
--- a/plugins/views_plugin_cache_time.inc
+++ b/plugins/views_plugin_cache_time.inc
@@ -41,9 +41,10 @@ class views_plugin_cache_time extends views_plugin_cache {
       '#maxlength' => '30',
       '#description' => t('Length of time in seconds raw query results should be cached.'),
       '#default_value' => $this->options['results_lifespan_custom'],
-      '#process' => array('form_process_select','ctools_dependent_process'),
-      '#dependency' => array(
-        'edit-cache-options-results-lifespan' => array('custom'),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="cache_options[results_lifespan]"]' => array('value' => 'custom'),
+        ),
       ),
     );
     $form['output_lifespan'] = array(
@@ -60,9 +61,10 @@ class views_plugin_cache_time extends views_plugin_cache {
       '#maxlength' => '30',
       '#description' => t('Length of time in seconds rendered HTML output should be cached.'),
       '#default_value' => $this->options['output_lifespan_custom'],
-      '#process' => array('form_process_select','ctools_dependent_process'),
-      '#dependency' => array(
-        'edit-cache-options-output-lifespan' => array('custom'),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="cache_options[output_lifespan]"]' => array('value' => 'custom'),
+        ),
       ),
     );
   }
diff --git a/plugins/views_plugin_display.inc b/plugins/views_plugin_display.inc
index d937c4b..9fdbe66 100644
--- a/plugins/views_plugin_display.inc
+++ b/plugins/views_plugin_display.inc
@@ -1477,17 +1477,23 @@ class views_plugin_display extends views_plugin {
           '#title' => t("Display 'more' link only if there is more content"),
           '#description' => t("Leave this unchecked to display the 'more' link even if there are no more items to display."),
           '#default_value' => !$this->get_option('use_more_always'),
-            '#dependency' => array(
-              'edit-use-more' => array(TRUE),
+          '#states' => array(
+            'visible' => array(
+              array(
+                ':input[name="use_more"]' => array('checked' => TRUE),
+              ),
             ),
+          ),
         );
         $form['use_more_text'] = array(
           '#type' => 'textfield',
           '#title' => t('More link text'),
           '#description' => t("The text to display for the more link."),
           '#default_value' => $this->get_option('use_more_text'),
-          '#dependency' => array(
-            'edit-use-more' => array(TRUE),
+          '#states' => array(
+            'visible' => array(
+              ':input[name="use_more"]' => array('checked' => TRUE),
+            ),
           ),
         );
         break;
@@ -1767,7 +1773,11 @@ class views_plugin_display extends views_plugin {
           '#title' => t('Custom URL'),
           '#default_value' => $this->get_option('link_url'),
           '#description' => t('A Drupal path or external URL the more link will point to. Note that this will override the link display setting above.') . $output,
-          '#dependency' => array('radio:link_display' => array('custom_url')),
+          '#states' => array(
+            'visible' => array(
+              ':input[name="link_display"]' => array('value' => 'custom_url'),
+            ),
+          ),
         );
         break;
       case 'analyze-theme':
diff --git a/plugins/views_plugin_display_feed.inc b/plugins/views_plugin_display_feed.inc
index 37d0ae4..0965fc1 100644
--- a/plugins/views_plugin_display_feed.inc
+++ b/plugins/views_plugin_display_feed.inc
@@ -154,7 +154,11 @@ class views_plugin_display_feed extends views_plugin_display_page {
           '#default_value' => $this->get_option('sitename_title'),
         );
         $form['title'] = $title;
-        $form['title']['#dependency'] = array('edit-sitename-title' => array(FALSE));
+        $form['title']['#states'] = array(
+          'visible' => array(
+            ':input[name="sitename_title"]' => array('checked' => FALSE),
+          ),
+        );
         break;
       case 'displays':
         $form['#title'] .= t('Attach to');
diff --git a/plugins/views_plugin_exposed_form.inc b/plugins/views_plugin_exposed_form.inc
index 287dd89..8ba5919 100644
--- a/plugins/views_plugin_exposed_form.inc
+++ b/plugins/views_plugin_exposed_form.inc
@@ -71,8 +71,10 @@ class views_plugin_exposed_form extends views_plugin {
       '#description' => t('Text to display in the reset button of the exposed form.'),
       '#default_value' => $this->options['reset_button_label'],
       '#required' => TRUE,
-      '#dependency' => array(
-        'edit-exposed-form-options-reset-button' => array(1)
+      '#states' => array(
+        'invisible' => array(
+          'input[name="exposed_form_options[reset_button]"]' => array('checked' => FALSE),
+        ),
       ),
     );
 
@@ -112,8 +114,10 @@ class views_plugin_exposed_form extends views_plugin {
       '#title' => t('Hide submit button'),
       '#description' => t('Hide submit button if javascript is enabled.'),
       '#default_value' => $this->options['autosubmit_hide'],
-      '#dependency' => array(
-        'edit-exposed-form-options-autosubmit' => array(1),
+      '#states' => array(
+        'invisible' => array(
+          'input[name="exposed_form_options[autosubmit]"]' => array('checked' => FALSE),
+        ),
       ),
     );
   }
diff --git a/plugins/views_plugin_pager_full.inc b/plugins/views_plugin_pager_full.inc
index d4c2203..dc3072a 100644
--- a/plugins/views_plugin_pager_full.inc
+++ b/plugins/views_plugin_pager_full.inc
@@ -151,8 +151,10 @@ class views_plugin_pager_full extends views_plugin_pager {
       '#required' => TRUE,
       '#description' => t('Label to use in the exposed items per page form element.'),
       '#default_value' => $this->options['expose']['items_per_page_label'],
-      '#dependency' => array(
-        'edit-pager-options-expose-items-per-page' => array(1)
+      '#states' => array(
+        'invisible' => array(
+          'input[name="pager_options[expose][items_per_page]"]' => array('checked' => FALSE),
+        ),
       ),
     );
 
@@ -162,8 +164,10 @@ class views_plugin_pager_full extends views_plugin_pager {
       '#required' => TRUE,
       '#description' => t('Set between which values the user can choose when determining the items per page. Separated by comma.'),
       '#default_value' => $this->options['expose']['items_per_page_options'],
-      '#dependency' => array(
-        'edit-pager-options-expose-items-per-page' => array(1)
+      '#states' => array(
+        'invisible' => array(
+          'input[name="pager_options[expose][items_per_page]"]' => array('checked' => FALSE),
+        ),
       ),
     );
 
@@ -180,8 +184,10 @@ class views_plugin_pager_full extends views_plugin_pager {
       '#title' => t('All items label'),
       '#description' => t('Which label will be used to display all items'),
       '#default_value' => $this->options['expose']['items_per_page_options_all_label'],
-      '#dependency' => array(
-        'edit-items-per-page-options-all' => array(1),
+      '#states' => array(
+        'invisible' => array(
+          'input[name="pager_options[expose][items_per_page_options_all]"]' => array('checked' => FALSE),
+        ),
       ),
     );
 
@@ -198,8 +204,10 @@ class views_plugin_pager_full extends views_plugin_pager {
       '#required' => TRUE,
       '#description' => t('Label to use in the exposed offset form element.'),
       '#default_value' => $this->options['expose']['offset_label'],
-      '#dependency' => array(
-        'edit-pager-options-expose-offset' => array(1)
+      '#states' => array(
+        'invisible' => array(
+          'input[name="pager_options[expose][offset]"]' => array('checked' => FALSE),
+        ),
       ),
     );
   }
diff --git a/plugins/views_plugin_query_default.inc b/plugins/views_plugin_query_default.inc
index aa8e7db..dc8e3d5 100644
--- a/plugins/views_plugin_query_default.inc
+++ b/plugins/views_plugin_query_default.inc
@@ -260,7 +260,11 @@ class views_plugin_query_default extends views_plugin_query {
       '#title' => t('Pure Distinct'),
       '#description' => t('This will prevent views from adding the base column to the distinct field. If this is not selected and the base column is a primary key, then a non-pure distinct will not function properly because the primary key is always unique.'),
       '#default_value' => !empty($this->options['pure_distinct']),
-      '#dependency' => array('edit-query-options-distinct' => '1'),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="query[options][distinct]"]' => array('checked' => TRUE),
+        ),
+      ),
     );
     $form['slave'] = array(
       '#type' => 'checkbox',
diff --git a/plugins/views_plugin_row_fields.inc b/plugins/views_plugin_row_fields.inc
index 1c73e38..1ba1c6b 100644
--- a/plugins/views_plugin_row_fields.inc
+++ b/plugins/views_plugin_row_fields.inc
@@ -48,12 +48,11 @@ class views_plugin_row_fields extends views_plugin_row {
       '#options' => $options,
       '#default_value' => $this->options['inline'],
       '#description' => t('Inline fields will be displayed next to each other rather than one after another. Note that some fields will ignore this if they are block elements, particularly body fields and other formatted HTML.'),
-      '#dependency' => array(
-        'edit-row-options-default-field-elements' => array(1),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="row_options[default_field_elements]"]' => array('checked' => TRUE),
+        ),
       ),
-      '#prefix' => '<div id="edit-row-options-inline-wrapper"><div>',
-      '#suffix' => '</div></div>',
-
     );
 
     $form['separator'] = array(
diff --git a/plugins/views_plugin_style.inc b/plugins/views_plugin_style.inc
index 4b8d9e7..5def269 100644
--- a/plugins/views_plugin_style.inc
+++ b/plugins/views_plugin_style.inc
@@ -220,17 +220,27 @@ class views_plugin_style extends views_plugin {
             '#title' => t('Use rendered output to group rows'),
             '#default_value' => $grouping['rendered'],
             '#description' => t('If enabled the rendered output of the grouping field is used to group the rows.'),
-            '#dependency' => array(
-              'edit-style-options-grouping-' . $i . '-field' => array_keys($field_labels),
-            )
+//            '#dependency' => array(
+//              'edit-style-options-grouping-' . $i . '-field' => array_keys($field_labels),
+//            ),
+            '#states' => array(
+             'visible' => array(
+              ':input[name="style_options[grouping][' . $i . '][field]"]' => array('value' => ''),
+              ),
+            ),
           );
           $form['grouping'][$i]['rendered_strip'] = array(
             '#type' => 'checkbox',
             '#title' => t('Remove tags from rendered output'),
             '#default_value' => $grouping['rendered_strip'],
-            '#dependency' => array(
-              'edit-style-options-grouping-' . $i . '-field' => array_keys($field_labels),
-            )
+//            '#dependency' => array(
+//              'edit-style-options-grouping-' . $i . '-field' => array_keys($field_labels),
+//            )
+            '#states' => array(
+              'disabled' => array(
+                ':input[name="style_options[grouping][' . $i . '][field]"]' => array('value' => ''),
+              ),
+            ),
           );
         }
       }
diff --git a/plugins/views_plugin_style_summary.inc b/plugins/views_plugin_style_summary.inc
index 5081dd6..256c0e3 100644
--- a/plugins/views_plugin_style_summary.inc
+++ b/plugins/views_plugin_style_summary.inc
@@ -54,8 +54,10 @@ class views_plugin_style_summary extends views_plugin_style {
       '#type' => 'textfield',
       '#title' => t('Items to display'),
       '#default_value' => $this->options['items_per_page'],
-      '#dependency' => array(
-        'edit-options-summary-options-' . str_replace('_', '-', $this->definition['name']) . '-override' => array(1)
+      '#states' => array(
+        'visible' => array(
+          ':input[name="options[summary][options][' . $this->definition['name'] . '][override]"]' => array('checked' => TRUE),
+        ),
       ),
     );
   }
diff --git a/plugins/views_plugin_style_table.inc b/plugins/views_plugin_style_table.inc
index 98919ab..b4aa6a9 100644
--- a/plugins/views_plugin_style_table.inc
+++ b/plugins/views_plugin_style_table.inc
@@ -207,9 +207,7 @@ class views_plugin_style_table extends views_plugin_style {
     }
 
     foreach ($columns as $field => $column) {
-      $safe = str_replace(array('][', '_', ' '), '-', $field);
-      // the $id of the column for dependency checking.
-      $id = 'edit-style-options-columns-' . $safe;
+      $column_selector = ':input[name="style_options[columns][' . $field . ']"]';
 
       $form['columns'][$field] = array(
         '#type' => 'select',
@@ -220,14 +218,22 @@ class views_plugin_style_table extends views_plugin_style {
         $form['info'][$field]['sortable'] = array(
           '#type' => 'checkbox',
           '#default_value' => !empty($this->options['info'][$field]['sortable']),
-          '#dependency' => array($id => array($field)),
+          '#states' => array(
+            'visible' => array(
+              $column_selector => array('value' => $field),
+            ),
+          ),
         );
         $form['info'][$field]['default_sort_order'] = array(
           '#type' => 'select',
           '#options' => array('asc' => t('Ascending'), 'desc' => t('Descending')),
           '#default_value' => !empty($this->options['info'][$field]['default_sort_order']) ? $this->options['info'][$field]['default_sort_order'] : 'asc',
-          '#dependency_count' => 2,
-          '#dependency' => array($id => array($field), 'edit-style-options-info-' . $safe . '-sortable' => array(1)),
+          '#states' => array(
+            'visible' => array(
+              $column_selector => array('value' => $field),
+              ':input[name="style_options[info][' . $field . '][sortable]"]' => array('checked' => TRUE),
+            ),
+          ),
         );
         // Provide an ID so we can have such things.
         $radio_id = drupal_html_id('edit-default-' . $field);
@@ -239,7 +245,11 @@ class views_plugin_style_table extends views_plugin_style {
           // because 'radio' doesn't fully support '#id' =(
           '#attributes' => array('id' => $radio_id),
           '#default_value' => $default,
-          '#dependency' => array($id => array($field)),
+          '#states' => array(
+            'visible' => array(
+              $column_selector => array('value' => $field),
+            ),
+          ),
         );
       }
       $form['info'][$field]['align'] = array(
@@ -251,18 +261,30 @@ class views_plugin_style_table extends views_plugin_style {
           'views-align-center' => t('Center'),
           'views-align-right' => t('Right'),
           ),
-        '#dependency' => array($id => array($field)),
+        '#states' => array(
+          'visible' => array(
+            $column_selector => array('value' => $field),
+          ),
+        ),
       );
       $form['info'][$field]['separator'] = array(
         '#type' => 'textfield',
         '#size' => 10,
         '#default_value' => isset($this->options['info'][$field]['separator']) ? $this->options['info'][$field]['separator'] : '',
-        '#dependency' => array($id => array($field)),
+        '#states' => array(
+          'visible' => array(
+            $column_selector => array('value' => $field),
+          ),
+        ),
       );
       $form['info'][$field]['empty_column'] = array(
         '#type' => 'checkbox',
         '#default_value' => isset($this->options['info'][$field]['empty_column']) ? $this->options['info'][$field]['empty_column'] : FALSE,
-        '#dependency' => array($id => array($field)),
+        '#states' => array(
+          'visible' => array(
+            $column_selector => array('value' => $field),
+          ),
+        ),
       );
 
       // markup for the field name
diff --git a/plugins/views_wizard/views_ui_base_views_wizard.class.php b/plugins/views_wizard/views_ui_base_views_wizard.class.php
index 8893ab8..224d317 100644
--- a/plugins/views_wizard/views_ui_base_views_wizard.class.php
+++ b/plugins/views_wizard/views_ui_base_views_wizard.class.php
@@ -103,8 +103,10 @@ class ViewsUiBaseViewsWizard implements ViewsWizardInterface {
     $form['displays']['page']['options'] = array(
       '#type' => 'container',
       '#attributes' => array('class' => array('options-set'),),
-      '#dependency' => array(
-        'edit-page-create' => array(1),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="page[create]"]' => array('checked' => TRUE),
+        ),
       ),
       '#pre_render' => array('ctools_dependent_pre_render'),
       '#prefix' => '<div><div id="edit-page-wrapper">',
@@ -147,7 +149,7 @@ class ViewsUiBaseViewsWizard implements ViewsWizardInterface {
       '#size' => 5,
       '#element_validate' => array('views_element_validate_integer'),
     );
-    $form['displays']['page']['options']['pager'] = array(
+    $form['displays']['page']['options']['pagerz'] = array(
       '#title' => t('Use a pager'),
       '#type' => 'checkbox',
       '#default_value' => TRUE,
@@ -159,10 +161,11 @@ class ViewsUiBaseViewsWizard implements ViewsWizardInterface {
     );
     $form['displays']['page']['options']['link_properties'] = array(
       '#type' => 'container',
-      '#dependency' => array(
-        'edit-page-link' => array(1),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="page[link]"]' => array('checked' => TRUE),
+        ),
       ),
-      '#pre_render' => array('ctools_dependent_pre_render'),
       '#prefix' => '<div id="edit-page-link-properties-wrapper">',
       '#suffix' => '</div>',
     );
@@ -194,10 +197,11 @@ class ViewsUiBaseViewsWizard implements ViewsWizardInterface {
       );
       $form['displays']['page']['options']['feed_properties'] = array(
         '#type' => 'container',
-        '#dependency' => array(
-          'edit-page-feed' => array(1),
+        '#states' => array(
+          'visible' => array(
+            ':input[name="page[feed]"]' => array('checked' => TRUE),
+          ),
         ),
-        '#pre_render' => array('ctools_dependent_pre_render'),
         '#prefix' => '<div id="edit-page-feed-properties-wrapper">',
         '#suffix' => '</div>',
       );
@@ -213,8 +217,10 @@ class ViewsUiBaseViewsWizard implements ViewsWizardInterface {
         '#options' => $feed_row_options,
         '#default_value' => key($feed_row_options),
         '#access' => (count($feed_row_options) > 1),
-        '#dependency' => array(
-          'edit-page-feed' => array(1),
+        '#states' => array(
+          'visible' => array(
+            ':input[name="page[feed]"]' => array('checked' => TRUE),
+          ),
         ),
         '#pre_render' => array('ctools_dependent_pre_render'),
         '#prefix' => '<div id="edit-page-feed-properties-row-plugin-wrapper">',
@@ -239,8 +245,10 @@ class ViewsUiBaseViewsWizard implements ViewsWizardInterface {
     $form['displays']['block']['options'] = array(
       '#type' => 'container',
       '#attributes' => array('class' => array('options-set'),),
-      '#dependency' => array(
-        'edit-block-create' => array(1),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="block[create]"]' => array('checked' => TRUE),
+        ),
       ),
       '#pre_render' => array('ctools_dependent_pre_render'),
       '#prefix' => '<div id="edit-block-wrapper">',
