diff --git a/views_save.js b/views_save.js
index 1eb712b..60b5384 100644
--- a/views_save.js
+++ b/views_save.js
@@ -21,7 +21,10 @@
 
         $form.hide();
 
-        $('a.views-save-cancel', $form).click(function() {Drupal.CTools.Modal.dismiss(); return false;});
+        $('a.views-save-cancel', $form).click(function () {
+          Drupal.CTools.Modal.dismiss();
+          return false;
+        });
 
         var id = $('.views-save-button-submit', $form).attr('id');
         if (id) {
@@ -45,7 +48,8 @@
         $('#modal-content').empty().append($form);
         $form.show();
 
-        $(document).bind('CToolsDetachBehaviors.views_save', views_save_hide_popup);
+        $(document)
+          .bind('CToolsDetachBehaviors.views_save', views_save_hide_popup);
 
         return false;
       }
@@ -107,9 +111,13 @@
         $save_button.hide().after($content);
         Drupal.attachBehaviors($content, settings);
         Drupal.CTools.Modal.dismiss();
+        $('body').trigger('views_save_update');
       }
     }
+  };
 
+  Drupal.ajax.prototype.commands.views_save_refresh = function() {
+    $('body').trigger('views_save_update');
   };
 
   /**
diff --git a/views_save.module b/views_save.module
index 981fa8e..1f0440b 100644
--- a/views_save.module
+++ b/views_save.module
@@ -47,12 +47,10 @@ function views_save_menu() {
     'type' => MENU_LOCAL_TASK,
     'weight' => 20,
   );
-
   $items['views-save/%views_save'] = array(
     'title' => 'Saved views',
     'access callback' => FALSE,
   );
-
   $items['views-save/%views_save/delete'] = array(
     'title' => 'Delete saved view',
     'page callback' => 'drupal_get_form',
@@ -60,7 +58,13 @@ function views_save_menu() {
     'access callback' => 'views_save_delete_access',
     'access arguments' => array(1),
   );
-
+  $items['views-save/%ctools_js/%views_save/delete'] = array(
+    'title' => 'Delete',
+    'page callback' => 'views_save_ajax_delete_confirm',
+    'page arguments' => array(1, 2),
+    'access callback' => 'views_save_delete_access',
+    'access arguments' => array(2),
+  );
   return $items;
 }
 
@@ -1158,3 +1162,49 @@ function views_save_delete_confirm_submit($form, &$form_state) {
   entity_delete('views_save', $form_state['values']['eid']);
   drupal_set_message(t('The saved view has been deleted.'));
 }
+
+function views_save_ajax_delete_confirm($js, $entity) {
+  if (!$js) {
+    drupal_goto('views-save/' . $entity->id . '/delete');;
+  }
+
+  ctools_include('modal');
+  ctools_include('ajax');
+
+  $form_state = array(
+    'no_redirect' => TRUE,
+    'build_info' => array(
+      'args' => array(
+        0 => $entity,
+      ),
+    ),
+
+    'ajax' => TRUE,
+  );
+  $delete_form = drupal_build_form('views_save_delete_confirm', $form_state, $entity);
+  $delete_form ['actions']['cancel'] = array(
+    '#markup' => l(t('Cancel'), '#',
+      array(
+        'attributes' => array(
+          'class' => 'ctools-close-modal'
+        ),
+        'external' => TRUE
+      )
+    )
+  );
+  if (!empty($form_state['executed'])) {
+    $output = array();
+    ctools_add_js('ajax-responder');
+    unset($_SESSION['messages']);
+    $output[] = array('command' => 'views_save_refresh');
+    $output[] = ajax_command_remove('.messages.messages--status,.messages.status');
+    $output[] = ajax_command_before('.views-save-button-save', '<div class="messages messages--status"></div>');
+    $output[] = ajax_command_append('.messages.messages--status',
+      t('%title has been deleted.', array('%title' => $entity->title)));
+    $output[] = ctools_modal_command_dismiss();
+    print ajax_render($output);
+    exit;
+  }
+  ctools_modal_render('Popup', $delete_form);
+  exit;
+}
