diff --git a/subuser.module b/subuser.module
index fd1e2e9..a4324b5 100644
--- a/subuser.module
+++ b/subuser.module
@@ -276,6 +276,12 @@ function subuser_form_alter(&$form, &$form_state, $form_id) {
         $form['account']['roles']['#access'] = count($form['account']['roles']['#options']) > 0;
       }
     break;
+    case 'user_cancel_confirm_form':
+	    $form['user_cancel_method']['#access'] = true;
+	    $form['user_cancel_confirm']['#access'] = true;
+	    $form['user_cancel_confirm']['#default_value'] = false;
+	    $form['user_cancel_notify']['#access'] = true; 
+    	    break;
   }
 }
 
@@ -364,3 +370,25 @@ function subuser_ctools_plugin_api($module, $api) {
     return array('version' => 1);
   }
 }
+
+/**
+ * Implements hook_form_FORM_ID_alter(): user_cancel_confirm.
+ */
+function subuser_form_user_cancel_confirm_form_alter(&$form, &$form_state, $form_id) {
+  $form['#submit'][] = 'subuser_user_cancel_form_submit';
+}
+
+/**
+ * Additional submit handler for user_cancel_confirm.
+ */
+function subuser_user_cancel_form_submit(&$form, &$form_state) { 
+  global $user;  
+  $account = $form_state['values']['_account']; 
+  
+  $children = subuser_load_all($user);
+  $acct_uid = is_object($account) ? $account->uid : $account;
+  if(in_array($acct_uid, $children)) {
+  	user_cancel($form_state['values'], $account->uid, $form_state['values']['user_cancel_method']);
+     $form_state['redirect'] = 'user/' . $user->uid . '/subuser';
+  }  
+}
