diff --git block_titlelink.module block_titlelink.module
index bfbdcbf..88f60fa 100644
--- block_titlelink.module
+++ block_titlelink.module
@@ -8,7 +8,7 @@
 define('BLOCK_TITLELINK_VARIABLE_PREFIX', 'block_titlelink_');
 
 /**
- * Implementation of hook_form_alter 
+ * Implementation of hook_form_alter
 **/
 function block_titlelink_form_alter(&$form, &$form_state, $form_id) {
   if ($form_id == 'block_admin_configure') {
@@ -18,7 +18,7 @@ function block_titlelink_form_alter(&$form, &$form_state, $form_id) {
     //Assign weight to block title so it appears above link
     if (!isset($form['block_settings']['#weight'])) {
       $form['block_settings']['#weight'] = -1;
-    }    
+    }
     $form['block_titlelink'] = array(
       '#type' => 'fieldset',
       '#title' => t('Block Title Link settings'),
@@ -31,41 +31,54 @@ function block_titlelink_form_alter(&$form, &$form_state, $form_id) {
       '#default_value' => $link,
       '#description' => t('URL for Block Title to link to.'),
     );
-    
-   $form['#validate'][] = 'block_titlelink_validate';
+
+    $form['#validate'][] = 'block_titlelink_configure_validate';
+    if (!array_search($form['#validate']['block_admin_configure_validate'])) {
+      $form['#validate'][] = 'block_admin_configure_validate';
+    }
+
+    $form['#submit'][] = 'block_titlelink_configure_submit';
+    if (!array_search($form['#submit']['block_admin_configure_submit'])) {
+      $form['#submit'][] = 'block_admin_configure_submit';
+    }
   }
 }
 
 /**
- * Implementation of hook_validation()
-**/
-function block_titlelink_validate($form, &$form_state) {
-  if ($form_state['values']['form_id'] == 'block_admin_configure') {
-    if (isset($form_state['values']['title_path']) && user_access('administer blocks')) {
-      $module = arg(4);
-      $delta = arg(5);
-      //TODO: Validate Link based on URL and PATH
-      $link = $form_state['values']['title_path'];
-      //Save Form Link
-      if ($module && ($delta || $delta === 0)) {
-        $name = $module .'_'. $delta;
-        //Delete link if empty
-        if (strlen($link) == 0) {
-          _block_titlelink_delete_link($name);
-        }
-        else {
-          _block_titlelink_save_link($name, $link);
-        }
-      }
+ * Validation callback for the block_admin_configure form.
+ */
+function block_titlelink_configure_validate($form, &$form_state) {
+  $module = $form_state['values']['module'];
+  $delta = $form_state['values']['delta'];
+  $link = $form_state['values']['title_path'];
+  //TODO: Validate Link based on URL and PATH
+}
+
+/**
+ * Submit callback for the block_admin_configure form.
+ */
+function block_titlelink_configure_submit($form, &$form_state) {
+  $module = $form_state['values']['module'];
+  $delta = $form_state['values']['delta'];
+
+  if ($module && ($delta || $delta === 0)) {
+    $name = $module . '_' . $delta;
+    $link = $form_state['values']['title_path'];
+
+    // Delete link if empty.
+    if (strlen($link) == 0) {
+      _block_titlelink_delete_link($name);
+    }
+    else {
+      _block_titlelink_save_link($name, $link);
     }
   }
-  block_admin_configure_validate($form, $form_state);
 }
 
 /**
  * Implementation of hook_preprocess_block
 **/
-function block_titlelink_preprocess_block(&$vars, $hook) {  
+function block_titlelink_preprocess_block(&$vars, $hook) {
   if ($hook == 'block') {
     $vars['block']->title_link = _block_titlelink_get_link($vars['block']);
     $title_link = $vars['block']->title_link;
@@ -99,9 +112,9 @@ function _block_titlelink_save_link($name, $value) {
   variable_set($varname, $value);
 }
 
-/** 
+/**
  * Function to delete a link variable
- * @param string $name 
+ * @param string $name
 **/
 function _block_titlelink_delete_link($name) {
   $varname = BLOCK_TITLELINK_VARIABLE_PREFIX . $name;
