diff --git a/flag_friend.info b/flag_friend.info
index 8d8b712..451c0a6 100644
--- a/flag_friend.info
+++ b/flag_friend.info
@@ -3,14 +3,14 @@ description = Flag users as friends. Implements it's own flag and a form for sen
 dependencies[] = flag
 core = 7.x
 package = Flags
+files[] = flag_friend.install
+files[] = flag_friend.module
 files[] = flag_friend.test
 files[] = includes/flag_friend.views.inc
 files[] = includes/flag_friend.views_default.inc
 files[] = includes/flag_friend_handler_argument_apachesolr_friend.inc
-files[] = includes/flag_friend_views_handler_field_status.inc
-files[] = includes/flag_friend_views_handler_field_links.inc
-files[] = includes/flag_friend_views_handler_filter_status.inc
-files[] = includes/flag_friend_plugin_access_pending_requested.inc
+files[] = includes/flag_friend_handler_argument_numeric.inc
+files[] = includes/flag_friend_handler_field_links.inc
 files[] = access/flag_friend_is_friend.inc
 files[] = content_types/flag_friend_count.inc
 files[] = content_types/flag_friend_links.inc
diff --git a/flag_friend.install b/flag_friend.install
index ecf6f46..8800c71 100644
--- a/flag_friend.install
+++ b/flag_friend.install
@@ -14,8 +14,6 @@ function flag_friend_install() {
 
 /**
  * Implements hook_uninstall().
- *
- * @TODO: We should consider removing all friend flags when uninstalling...
  */
 function flag_friend_uninstall() {
   // Remove default flag if it's enabled.
@@ -31,13 +29,13 @@ function flag_friend_uninstall() {
 function flag_friend_schema() {
   $schema['flag_friend'] = array(
     'fields' => array(
-      'fcid' => array(
-        'description' => 'The unique ID for this particular flag.',
+      'uid' => array(
         'type' => 'int',
         'unsigned' => TRUE,
         'not null' => TRUE,
+        'disp-width' => '10'
       ),
-      'status' => array(
+      'friend_uid' => array(
         'type' => 'int',
         'unsigned' => TRUE,
         'not null' => TRUE,
@@ -49,7 +47,10 @@ function flag_friend_schema() {
         'disp-width' => '11'
       )
     ),
-    'primary key' => array('fcid'),
+    'primary key' => array('uid', 'friend_uid'),
+    'indexes' => array(
+      'friend_uid' => array('friend_uid'),
+    ),
   );
 
   $schema['flag_friend_message'] = array(
@@ -109,92 +110,3 @@ function flag_friend_update_7001() {
     db_query("DELETE ff FROM {flag_friend} ff WHERE ff.uid = :uid AND ff.friend_uid = :friend_uid", array(':uid' => $uid, ':friend_uid' => $friend_uid));
   }
 }
-
-/**
- * Change the execution weight of the module.
- */
-function flag_friend_update_7002() {
-  db_update('system')
-    ->fields(array('weight' => -10))
-    ->condition('type', 'module')
-    ->condition('name', 'flag_friend')
-    ->execute();
-}
-
-/**
- * Update the flag_friend table to assume flags persist.
- */
-function flag_friend_update_7003() {
-
-  // Rename the the flag_friend table to flag_friend_old.
-  db_rename_table('flag_friend', 'flag_friend_old');
-
-  // Create the new flag_friend table.
-  $schema = flag_friend_schema();
-  db_create_table('flag_friend', $schema['flag_friend']);
-}
-
-/**
- * Record friend status based on existing flags.
- */
-function flag_friend_update_7004() {
-  // Get the friend flag.
-  $flag = flag_get_flag('friend');
-
-  // Query the database directly, as there's no API call in Flag 2.x.
-  $result = db_select('flag_content', 'fc')
-    ->fields('fc', array('fcid', 'content_id', 'uid', 'timestamp'))
-    ->condition('fid', $flag->fid)
-    ->execute();
-
-  // Insert all pending relationships into the table.
-  foreach ($result as $row) {
-    db_insert('flag_friend')
-      ->fields(array(
-          'fcid' => $row->fcid,
-          'status' => FLAG_FRIEND_PENDING,
-          'created' => $row->timestamp,
-        ))
-      ->execute();
-  }
-}
-
-/**
- * Re-flag friended user accounts.
- */
-function flag_friend_update_7005(&$sandbox) {
-  $max_entries_per_round = 100;
-
-  if (!isset($sandbox['progress'])) {
-    $sandbox['progress'] = 0;
-    $sandbox['max'] = db_query('SELECT COUNT(*) FROM flag_friend_old')->fetchField();
-  }
-
-  // Query 100 items from the flag_friend_old table.
-  $result = db_select('flag_friend_old', 'ffo')
-    ->fields('ffo', array('uid', 'friend_uid', 'created'))
-    ->range(0, $max_entries_per_round)
-    ->execute();
-
-  // Reflag friended users.
-  foreach ($result as $row) {
-    flag('flag', 'friend', $row->friend_uid, user_load($row->uid));
-    flag('flag', 'friend', $row->uid, user_load($row->friend_uid));
-    db_delete('flag_friend_old')
-      ->condition('uid', $row->uid)
-      ->condition('friend_uid', $row->friend_uid)
-      ->execute();
-    $sandbox['progress']++;
-  }
-
-  $sandbox['#finished'] = empty($sandbox['max']) ? 1 : ($sandbox['progress'] / $sandbox['max']);
-
-  if ($sandbox['#finished'] >= 1) {
-    // Delete the old friend table.
-    db_drop_table('flag_friend_old');
-
-    // Finally clear the cache.
-    cache_clear_all();
-  }
-}
-
diff --git a/flag_friend.module b/flag_friend.module
index 03288c4..092fa8a 100644
--- a/flag_friend.module
+++ b/flag_friend.module
@@ -6,179 +6,64 @@
  */
 
 // define our statuses
-define('FLAG_FRIEND_BOTH', 0); //Users are friends
-define('FLAG_FRIEND_FLAGGED', 1); //Users are friends
-define('FLAG_FRIEND_UNFLAGGED', 2); //Neither user is flagged as a friend
-define('FLAG_FRIEND_APPROVAL', 3); //User has been flagged, pending their approval
-define('FLAG_FRIEND_PENDING', 4); //1 user has flagged the other user
+define('FLAG_FRIEND_BOTH', 0);
+define('FLAG_FRIEND_FLAGGED', 1);
+define('FLAG_FRIEND_UNFLAGGED', 2);
+define('FLAG_FRIEND_APPROVAL', 3);
+define('FLAG_FRIEND_PENDING', 4);
 
 /**
- * Implements hook_views_access().
+ * Implements hook_flag().
  */
-function flag_friend_views_access() {
-  global $user;
-  if ($user->uid == arg(1)) {
-    return TRUE;
-  }
-  else {
-    return FALSE;
-  }
-}
-
-/**
- * Implements hook_menu_alter
- */
-function flag_friend_menu_alter(&$items) {
-  $items['flag/%/%flag/%']['page callback'] = 'flag_friend_page';
-}
-
-function flag_friend_page ($action, $flag, $content_id) {
-  if ($action != 'unflag') {
-    //we only want to alter unflagging
-    flag_page($action, $flag, $content_id);
-  } else {
-    global $user;
-    $fcid = db_query("SELECT fcid FROM {flag_content} WHERE content_id = :content_id AND uid = :uid", array(':content_id' => $content_id, ':uid' => $user->uid))->fetchField();
-    if ($fcid) {
-      //if we are unflagging a reciprocal relationship, proceed as usual with the flag module
-      flag_page($action, $flag, $content_id);
-    } else {
-      //if we are acting on a deny link, we need the FID and original flagging user account
-      //to pass to into hook_flag
-      $fcid = db_query("SELECT fcid FROM {flag_content} WHERE content_id = :content_id AND uid = :uid", array(':content_id' => $user->uid, ':uid' => $content_id))->fetchField();
-      $account = user_load($content_id);
-      flag_friend_flag('unflag', $flag, $user->uid, $account, $fcid, $_REQUEST['token']);
-    }
-  }
-}
-
-/**
- * Implements hook_flag()
- *
- * We've added a $token param which is passed in if the function is called from flag_friend_page,
- * our override for flag_page in case a deny function is clicked.
- */
-function flag_friend_flag($op, $flag, $content_id, $account, $fcid, $token = NULL) {
+function flag_friend_flag($event, $flag, $content_id, $account) {
   if ($flag->name == 'friend') {
-    if ($op == 'flag') {
+    if ($event == 'flag') {
+
       // See the status of the friendship.
-      $status = flag_friend_determine_friend_status($flag, $content_id, $account->uid, TRUE);
+      $status = flag_friend_determine_friend_status($flag, $account->uid, $content_id, TRUE);
       $friend_account = user_load($content_id);
 
-      //FLAG_FRIEND_UNFLAGGED -- need to add a pending relationship
-      if ($status === FLAG_FRIEND_UNFLAGGED) {
-        $result = db_insert('flag_friend')
-          ->fields(array(
-              'fcid' => $fcid,
-              'status' => FLAG_FRIEND_PENDING,
-              'created' => REQUEST_TIME,))
-          ->execute();
-
-        if (function_exists('rules_invoke_event_by_args')) {
-          rules_invoke_event_by_args('flag_friend_request', array(
-              'receiving_user' => $content_id,
-              'requesting_user' => $account,
-          ));
-        }
-
-        module_invoke_all('flag_friend', 'request', $content_id, $account, $flag);
-      } elseif ($status === FLAG_FRIEND_APPROVAL) {
-        $result = db_insert('flag_friend')
-        ->fields(array(
-            'fcid' => $fcid,
-            'status' => FLAG_FRIEND_FLAGGED,
-            'created' => REQUEST_TIME,
-        ))->execute();
-
-        $fcid2 = db_query("SELECT fcid FROM {flag_content} WHERE content_id = :account AND uid = :content_id", array(':account' => $account->uid, ':content_id' => $content_id))->fetchField();
-
-        $query = db_update('flag_friend')
-          ->fields(array('status' => FLAG_FRIEND_FLAGGED))
-          ->condition(db_and()
-            ->condition('fcid', $fcid2)
-            ->condition('status', FLAG_FRIEND_PENDING))
+      // If both are now flagged, we record the relationship and remove the flags.
+      if ($status === FLAG_FRIEND_BOTH) {
+        // Ensure no duplicates are made.
+        $exists = db_query("SELECT COUNT(1) FROM {flag_friend} WHERE (uid = :uid AND friend_uid = :friend_uid) OR (uid = :friend_uid AND friend_uid = :uid)", array(':uid' => $account->uid, ':friend_uid' => $content_id))->fetchField();
+        if (!$exists) {
+          $id = db_insert('flag_friend')
+            ->fields(array(
+              'uid' => $account->uid,
+              'friend_uid' => $content_id,
+              'created' => $_SERVER['REQUEST_TIME'],
+            ))
             ->execute();
+        }
 
         // Remove any message entries for either user.
         flag_friend_message('unflag', $flag, $account->uid, $content_id);
         flag_friend_message('unflag', $flag, $content_id, $account->uid);
 
+        // Then remove the flags.
+        $flag->flag('unflag', $content_id, $account);
+        $flag->flag('unflag', $account->uid, $friend_account);
+
+        // fire trigger
+        module_invoke_all('flag_friend', 'approve', $friend_account, $account, $flag);
+
         if (function_exists('rules_invoke_event_by_args')) {
           rules_invoke_event_by_args('flag_friend_approve', array(
-              'approving_user' => $account,
-              'requesting_user' => $content_id,
+            'approving_user' => $account,
+            'requesting_user' => $friend_account,
           ));
         }
       }
-      // fire trigger
-      module_invoke_all('flag_friend', 'approve', $content_id, $account, $flag);
-
-    } elseif ($op == 'unflag') {
-      $fids = array($fcid);
-      $fcid2 = flag_friend_get_flags($flag, $content_id, $account->uid, $reset = NULL);
-      if (!empty($fcid2)) {
-        $fids[] = $fcid2[0]->fcid;
-
-        //we need to delete the reciprocal flag in the flag_content table.
-        //This should be done via the $flag object to ensure the hooks are fired
-        //but it didn't seem to work
-        $friend_delete = db_delete('flag_content')
-        ->condition('fcid', $fcid2[0]->fcid)
-        ->execute();
-      }
-      $num_deleted = db_delete('flag_friend')
-      ->condition('fcid', $fids, 'IN')
-      ->execute();
-
-      //if this function is being called by flag_friend_page, our deny link
-      //we need to mimic the flag module behaviour. This is taken from the
-      //flag module flag_page function
-      if ($token) {
-        $action = $op;
-        global $user;
-       // Shorten up the variables that affect the behavior of this page.
-        $js = isset($_REQUEST['js']);
-
-        // Specifically $_GET to avoid getting the $_COOKIE variable by the same key.
-        $has_js = isset($_GET['has_js']);
-
-        // Check the flag token, then perform the flagging.
-        // This is different from flag module in that we are passing the account uid
-        // as the content_id. This is because the situation is reversed since the user
-        // acting on the flag is the actual content_id and not the owner of the flag
-        if (!flag_check_token($token, $account->uid)) {
-          $error = t('Bad token. You seem to have followed an invalid link.') . ' ' . $token;
-        }
-        elseif ($user->uid == 0 && !$has_js) {
-          $error = t('You must have JavaScript and cookies enabled in your browser to flag content.');
-        }
-        // If an error was received, set a message and exit.
-        if (isset($error)) {
-          if ($js) {
-            drupal_add_http_header('Content-Type', 'text/javascript; charset=utf-8');
-            print drupal_json_encode(array(
-              'status' => FALSE,
-              'errorMessage' => $error,
-            ));
-            drupal_exit();
-          }
-          else {
-            drupal_set_message($error);
-            drupal_access_denied();
-            return;
-          }
-        }
+      else {
+        // fire trigger
+        module_invoke_all('flag_friend', 'request', $friend_account, $account, $flag);
 
-        // If successful, return data according to the request type.
-        if ($js) {
-          drupal_add_http_header('Content-Type', 'text/javascript; charset=utf-8');
-          $flag->link_type = 'toggle';
-          print drupal_json_encode(flag_build_javascript_info($flag, $content_id));
-          drupal_exit();
-        }
-        else {
-          drupal_set_message($flag->get_label($action . '_message', $content_id));
-          drupal_goto();
+        if (function_exists('rules_invoke_event_by_args')) {
+          rules_invoke_event_by_args('flag_friend_request', array(
+            'receiving_user' => $friend_account,
+            'requesting_user' => $account,
+          ));
         }
       }
     }
@@ -204,8 +89,7 @@ function flag_friend_preprocess_flag(&$vars) {
     global $user;
 
     // Determine what the status in the friend process is.
-    $status = flag_friend_determine_friend_status($vars['flag'], $vars['content_id'], $user->uid);
-
+    $status = flag_friend_determine_friend_status($vars['flag'], $user->uid, $vars['content_id']);
     switch ($status) {
       case FLAG_FRIEND_PENDING:
         $vars['link_text'] = t('Friend Requested. Cancel?');
@@ -298,83 +182,40 @@ function flag_friend_rules_event_info() {
 }
 
 /**
- * Function to get the fcids for a given user / content id
+ * Retrieve pending friend flags.
  *
  * @param $flag
  *   The flag object.
  * @param $content_id
- *   The account id of the user being acted on.
- * @param $uid
- *   The account id of the logged in user.
- * @return
- *   An array containing information for each flag content id found
- */
-
-function flag_friend_get_flags($flag, $content_id, $uid, $reset = FALSE) {
-  //TODO: Need to come back to the static cache
-/*  $records = &drupal_static(__FUNCTION__, array(), $reset);
-  if (!empty($records)) {
-    return $records;
-  }*/
-
-  $query = db_select('flag_content', 'fc');
-  $query->join('flag_friend', 'ff', 'ff.fcid = fc.fcid');
-  $query
-  ->fields('fc', array('fcid', 'content_id', 'uid'))
-  ->fields('ff', array('status'))
-  ->condition(db_or()
-      ->condition(db_and()
-          ->condition('content_id', $content_id)
-          ->condition('fc.uid', $uid))
-      ->condition(db_and()
-          ->condition('content_id', $uid)
-          ->condition('fc.uid', $content_id)));
-  $result = $query->execute();
-
-  $records = array();
-
-  foreach ($result as $record) {
-    $records[] = $record;
-  }
-  return $records;
-}
-
-/**
- * Retrieve a list of friends for the given user.
- *
- * @param $uid
- *   The user id.
+ *   The content we're operating on.
+ * @param $reset
+ *   Boolean trigger to reset the static cache.
  * @return
- *   Array of UIDs that are friends of the given user.
+ *   Array of pending friend flags.
  */
-function flag_friend_get_friends_query($uid) {
-  $query = db_select('flag_content', 'fc');
-  $query->join('flag_friend', 'ff', 'ff.fcid = fc.fcid');
-  $query->condition(db_or()
-      ->condition('fc.uid', $uid)
-      ->condition('fc.content_id', $uid))
-      ->condition('ff.status', FLAG_FRIEND_FLAGGED)
-      ->fields('fc', array('uid', 'content_id'));
-  $results = $query->execute();
-
-  $friends = array();
-
-  foreach ($results as $friend) {
-    //we'll get two results for each friendship. Need to make sure we only assign one to
-    //the return array
-    if ($friend->uid == $uid) {
-      $friends[$friend->content_id] = $friend->content_id;
-    }
-    elseif ($friend->content_id == $uid) {
-      $friends[$friend->uid] = $friend->uid;
+function flag_friend_get_flags($flag, $content_id, $reset = NULL) {
+  static $flagged_content;
+  $uid = $content_id;
+  $content_type = $flag->content_type;
+
+  if (!isset($flagged_content[$uid][$content_type][$content_id]) || $reset) {
+    $flags = flag_get_flags($flag->content_type);
+    $flagged_content[$uid][$content_type][$content_id] = array();
+
+    // get flags with messages
+    $results = db_query("SELECT fc.*, ffm.message FROM {flag_content} fc LEFT JOIN {flag_friend_message} ffm ON ffm.fcid = fc.fcid WHERE fc.fid = :fc.fid AND fc.content_type = :fc.content_type AND fc.content_id = :fc.content_id", array(':fc.fid' => $flag->fid, ':fc.content_type' => $content_type, ':fc.content_id' => $content_id))->fetchAll();
+    foreach ($result as $new_flag) {
+      $fcid = flag_friend_get_fcid($flag, $content_id, $new_flag->uid);
+      $flagged_content[$uid][$content_type][$content_id][$fcid] = $new_flag;
+      $flagged_content[$uid][$content_type][$content_id][$fcid]->user = user_load($new_flag->uid);
     }
   }
 
-  return $friends;
+  return $flagged_content[$uid][$content_type][$content_id];
 }
 
 /**
- * Retrieve each loaded friend for the given user.
+ * Retrieve a list of friends for the given user.
  *
  * @param $uid
  *   The user id.
@@ -384,16 +225,25 @@ function flag_friend_get_friends_query($uid) {
  *   Array of user objects.
  */
 function flag_friend_get_friends($uid, $reset = NULL) {
-  static $cache = array();
+  static $friends;
 
-  if (!isset($cache[$uid]) || $reset) {
-    $cache[$uid] = array();
-    $friends = flag_friend_get_friends_query($uid);
-    foreach ($friends as $friend) {
-      $cache[$uid][$friend] = (array) user_load($friend);
+  if (!isset($friends[$uid]) || $reset) {
+    $friends[$uid] = array();
+    $results = db_query("SELECT * FROM {flag_friend} WHERE uid = :uid OR friend_uid = :friend_uid", array(':uid' => $uid, ':friend_uid' => $uid))->fetchAll();
+    foreach ($results as $friend) {
+      // if the current user is in the uid column
+      if ($friend->uid == $uid) {
+        // load the friend_uid
+        $friends[$uid][$friend->friend_uid] = user_load($friend->friend_uid);
+      }
+      else { // the current user is the friend_uid
+        // load the uid column as the friend
+        $friends[$uid][$friend->uid] = user_load($friend->uid);
+      }
     }
   }
-  return $cache[$uid];
+
+  return $friends[$uid];
 }
 
 /**
@@ -409,12 +259,12 @@ function flag_friend_get_friends($uid, $reset = NULL) {
 function flag_friend_get_friend_count($uid, $reset = NULL) {
   static $friend_count;
 
-  if (!isset($friends[$uid]) || $reset) {
-    $friends = flag_friend_get_friends_query($uid);
-    $friend_count = count($friends);
+  if (!isset($friend_count[$uid]) || $reset) {
+    $sql = "SELECT COUNT(1) FROM {flag_friend} WHERE uid = %d OR friend_uid = %d";
+    $friend_count[$uid] = db_query("SELECT COUNT(1) FROM {flag_friend} WHERE uid = :uid OR friend_uid = :uid", array(':uid' => $uid, ':friend_uid' => $uid))->fetchField();
   }
 
-  return $friend_count;
+  return $friend_count[$uid];
 }
 
 /**
@@ -476,16 +326,16 @@ function flag_friend_user_presave(&$edit, $account, $category) {
 }
 
 /**
- * Implements hook_user_delete()
+ * Implements hook_user_cancel().
  */
-function flag_friend_user_delete($account) {
-  $result = db_query("SELECT * FROM {flag_content} WHERE uid = :uid OR content_id = :uid", array(':uid' => $account->uid));
-  $fcids = array();
-  foreach ($result as $record) {
-    $fcids[] = $record->fcid;
-  }
+function flag_friend_user_cancel($edit, $account, $method) {
+  // remove any friend relationships if an account is removed
   db_delete('flag_friend')
-  ->condition('fcid', $fcids, 'IN')
+  ->condition(
+    db_or()
+    ->condition('uid', $account->uid)
+    ->condition('friend_uid', $account->uid)
+  )
   ->execute();
 }
 
@@ -499,7 +349,7 @@ function flag_friend_user_view($account, $view_mode) {
       $account->content['flags'][$flag->name]['#access'] = FALSE;
     }
     else {
-      $status = flag_friend_determine_friend_status($flag, $account->uid, $GLOBALS['user']->uid);
+      $status = flag_friend_determine_friend_status($flag, $GLOBALS['user']->uid, $account->uid);
       if ($status == FLAG_FRIEND_APPROVAL) {
         $account->content['flags'][$flag->name]['#markup'] .= flag_friend_create_link('unflag', $account->uid);
       }
@@ -517,8 +367,14 @@ function flag_friend_user_view($account, $view_mode) {
  */
 function flag_friend_create_link($type, $uid) {
   $flag = flag_get_flag('friend');
-  $link = str_replace(t('Approve'), t('Deny'), $flag->theme('unflag', $uid));
-  return $link;
+  if ($type == 'unfriend') {
+    $link = str_replace(t('Approve'), t('Deny'), str_replace('unflag', 'unfriend', $flag->theme('unflag', $uid)));
+    return $link;
+  }
+  else {
+    $link = str_replace(t('Approve'), t('Deny'), $flag->theme('unflag', $uid));
+    return $link;
+  }
 }
 
 /**
@@ -526,39 +382,67 @@ function flag_friend_create_link($type, $uid) {
  *
  * @param $flag
  *   The flag object.
- * @param $content_id
- *   The account id of the user being acted on.
- * @param $uid
- *   The account id of the logged in user.
+ * @param $uid1
+ *   The account id of one of the users.
+ * @param $uid2
+ *   The account id of the other user.
  * @return
  *   A string describing the status of the relationship.
  * @todo: this could possibly go into hook_flag_access once available.
  */
-function flag_friend_determine_friend_status($flag, $content_id, $uid, $reset = NULL) {
-  if(isset($flag)) {
-    $records = flag_friend_get_flags($flag, $content_id, $uid, TRUE);
+function flag_friend_determine_friend_status($flag, $uid1, $uid2, $reset = NULL) {
+  static $status_cache = array();
+  if ($reset) {
+    unset($status_cache);
+  }
+  // always keep these in the same order
+  if ($uid1 > $uid2) {
+    $key1 = $uid1;
+    $key2 = $uid2;
+  }
+  else {
+    $key1 = $uid2;
+    $key2 = $uid1;
+  }
 
-    if (empty($records)) {
-      //neither user has every flagged eachother
-      return FLAG_FRIEND_UNFLAGGED;
-    }
+  if (isset($flag)) {
+    if (!isset($status_cache[$key1][$key2])) {
+      $you_are_flagged = $flag->is_flagged($uid1, $uid2);
+      $they_are_flagged = $flag->is_flagged($uid2, $uid1);
 
-    //status will be the same for whatever flags we get back and if it is a pending relationship
-    //we'll only have 1 record returned
-    $relationship = array_shift($records);
-
-    if ($relationship->status == 0 || $relationship->status == 1) {
-      //the users are friends
-      return FLAG_FRIEND_BOTH;
-    } elseif ($relationship->status == 4 && $relationship->content_id == $uid) {
-      //the logged in user was flagged by another user
-      return FLAG_FRIEND_APPROVAL;
-    } elseif ($relationship->status == 4 && $relationship->content_id == $content_id) {
-      //the logged in user flagged another user
-      return FLAG_FRIEND_PENDING;
+      $friends = db_select('flag_friend', 'ff')
+        ->fields('ff', array('created'))
+        ->condition(db_or()
+          ->condition(db_and()
+            ->condition('uid', $uid1)
+            ->condition('friend_uid', $uid2)
+          )
+          ->condition(db_and()
+            ->condition('uid', $uid2)
+            ->condition('friend_uid', $uid1)
+          )
+        )
+        ->execute()->fetchField();
+
+      // see if these users have flagged eachother
+      if ($you_are_flagged && $they_are_flagged) {
+        $status_cache[$key1][$key2] = FLAG_FRIEND_BOTH;
+      }
+      elseif ($friends) {
+        $status_cache[$key1][$key2] = FLAG_FRIEND_FLAGGED;
+      }
+      elseif (!$you_are_flagged && !$they_are_flagged) {
+        $status_cache[$key1][$key2] = FLAG_FRIEND_UNFLAGGED;
+      }
+      elseif ($you_are_flagged && !$they_are_flagged) {
+        $status_cache[$key1][$key2] = FLAG_FRIEND_APPROVAL;
+      }
+      elseif (!$you_are_flagged && $they_are_flagged) {
+        $status_cache[$key1][$key2] = FLAG_FRIEND_PENDING;
+      }
     }
   }
-
+  return $status_cache[$key1][$key2];
 }
 
 /**
@@ -621,7 +505,7 @@ function flag_friend_unfriend_form($action, $flag, $content_id, $token) {
   global $user;
   $form['current'] = array('#type' => 'value', '#value' => func_get_args());
 
-  $status = flag_friend_determine_friend_status($flag, $content_id, $user->uid);
+  $status = flag_friend_determine_friend_status($flag, $user->uid, $content_id);
   switch ($status) {
     case FLAG_FRIEND_PENDING:
       // pending
@@ -653,7 +537,7 @@ function flag_friend_form_submit($form, &$form_state) {
   $flag = $form_state['values']['current'][1];
   $content_id = $form_state['values']['current'][2];
   $token = $form_state['values']['current'][3];
-  $status = flag_friend_determine_friend_status($flag, $content_id, $user->uid, TRUE);
+  $status = flag_friend_determine_friend_status($flag, $user->uid, $content_id, TRUE);
 
   if (isset($form_state['values']['flag_friend_message'])) {
     $flag->friend_message = $form_state['values']['flag_friend_message'];
@@ -663,6 +547,10 @@ function flag_friend_form_submit($form, &$form_state) {
     }
     flag_friend_message_email($status, $flag, $content_id, $user);
   }
+  // the only time we want to unfriend, is if $status = FLAGGED or APPROVAL
+  elseif ($status === FLAG_FRIEND_FLAGGED || $status === FLAG_FRIEND_APPROVAL) {
+    flag_friend_unfriend($action, $flag, $content_id, $user, $status);
+  }
   elseif ($status === FLAG_FRIEND_PENDING) {
     // Clean message when user cancel own request.
     flag_friend_message($action, $flag, $content_id, $user->uid);
@@ -1109,7 +997,7 @@ function flag_friend_preprocess_author_pane(&$variables) {
   // flag out-of-the-box so I feel it's pretty safe to use this permisssion.
   if ($account_id != 0 && user_access('access user profiles') && $user->uid != $account_id) {
     $flag = flag_get_flag('friend');
-    $flag_status = flag_friend_determine_friend_status($flag, $account_id, $user->uid);
+    $flag_status = flag_friend_determine_friend_status($flag, $user->uid, $account_id);
 
     switch ($flag_status) {
       case (FLAG_FRIEND_FLAGGED):
diff --git a/includes/flag_friend.views.inc b/includes/flag_friend.views.inc
index 834bf22..90c61ba 100644
--- a/includes/flag_friend.views.inc
+++ b/includes/flag_friend.views.inc
@@ -6,6 +6,28 @@
  */
 
 /**
+ * Implements hook_views_handlers().
+ */
+function flag_friend_views_handlers() {
+  return array(
+    'info' => array(
+      'path' => drupal_get_path('module', 'flag_friend') . '/includes',
+    ),
+    'handlers' => array(
+      'flag_friend_handler_argument_numeric' => array(
+        'parent' => 'views_handler_argument_numeric',
+      ),
+      'flag_friend_handler_argument_apachesolr_friend' => array(
+        'parent' => 'apachesolr_views_handler_argument',
+      ),
+      'flag_friend_handler_field_links' => array(
+        'parent' => 'views_handler_field',
+      ),
+    ),
+  );
+}
+
+/**
  * Implements hook_views_data().
  */
 function flag_friend_views_data() {
@@ -13,33 +35,29 @@ function flag_friend_views_data() {
 
   // flag_friend table
   $data['flag_friend']['table']['group'] = t('Flag friend');
-
-  $data['flag_friend']['table']['join']['flag_content'] = array(
-    'left_field' => 'fcid',
-    'field' => 'fcid',
-    'type' => 'INNER',
+  $data['flag_friend']['table']['join'] = array(
+    'users' => array(
+      'left_field' => 'uid',
+      'field' => 'uid',
+    ),
   );
 
-  $data['flag_friend']['status'] = array(
-    'title' => t('Relationship Status'),
-    'help' => t('Display the status of the relationship, whether pending or approved'),
+  $data['flag_friend']['uid'] = array(
+    'group' => t('Flag friend'),
+    'title' => t('Flag friend links'),
+    'help' => t('Remove/Deny links'),
+    'real field' => 'uid',
     'field' => array(
-      'handler' => 'flag_friend_views_handler_field_status',
-      'click sortable' => TRUE,
-    ),
-    'sort' => array(
-      'handler' => 'views_handler_sort',
-    ),
-    'filter' => array(
-      'handler' => 'flag_friend_views_handler_filter_status',
+      'handler' => 'flag_friend_handler_field_links',
     ),
   );
 
-  $data['flag_friend']['friend_link'] = array(
-    'title' => t('Friend Link'),
-    'help' => t('Flag Friend Link. Only used for creating links for users who have been flagged as by a friend'),
-    'field' => array(
-      'handler' => 'flag_friend_views_handler_field_links',
+  // argument
+  $data['flag_friend']['friend_uid'] = array(
+    'title' => t('Friends of'),
+    'help' => t('Retrieve the friends of the user id given.'),
+    'argument' => array(
+      'handler' => 'flag_friend_handler_argument_numeric',
     ),
   );
 
@@ -61,7 +79,7 @@ function flag_friend_views_data() {
       'handler' => 'views_handler_argument_date',
     ),
   );
-/*
+
   // flag_friend_message table
   $data['flag_friend_message']['table']['group'] = t('Flag friend');
   $data['flag_friend_message']['table']['join'] = array(
@@ -79,7 +97,7 @@ function flag_friend_views_data() {
       'handler' => 'views_handler_field',
       'click sortable' => FALSE,
     ),
-  );*/
+  );
 
   // Add the flag relationship.
   // This basically just changes the 'base field' while reusing Flag's
@@ -94,7 +112,7 @@ function flag_friend_views_data() {
       'handler' => 'flag_handler_relationship_content',
       'label' => t('flag friend'),
       'base' => 'flag_content',
-      'base field' => 'content_id',
+      'base field' => 'uid',
       'relationship field' => 'uid',
     ),
   );
@@ -117,18 +135,3 @@ function flag_friend_views_data_alter(&$data) {
     );
   }
 }
-
-/**
- * Implements hook_views_plugins
- */
-function flag_friend_views_plugins() {
-  return array(    
-    'access' => array(
-      'flag_friend' => array(
-        'title' => t('Restrict Flag Friend Pending and Requests Access'),
-        'help' => t('Creates a custom access check to see if a user is looking at their own account.'),
-        'handler' => 'flag_friend_plugin_access_pending_requested',
-      ),
-    ),
-  );
-}
\ No newline at end of file
diff --git a/includes/flag_friend.views_default.inc b/includes/flag_friend.views_default.inc
index 3de995d..fe783a8 100644
--- a/includes/flag_friend.views_default.inc
+++ b/includes/flag_friend.views_default.inc
@@ -10,297 +10,336 @@
  * Implements hook_views_default_views().
  */
 function flag_friend_views_default_views() {
-  $view = new view();
+  $view = new view;
   $view->name = 'friends';
-  $view->description = 'Flag Friend Default Views';
-  $view->tag = 'default';
+  $view->description = 'Various page displays for flag_friend.';
+  $view->tag = 'flag.friend';
   $view->base_table = 'users';
-  $view->human_name = 'Friends';
-  $view->core = 7;
-  $view->api_version = '3.0';
+  $view->human_name = '';
+  $view->api_version = '3.0-alpha1';
   $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
-  
-  /* Display: Master */
-  $handler = $view->new_display('default', 'Master', 'default');
-  $handler->display->display_options['title'] = 'Friends';
-  $handler->display->display_options['use_more_always'] = FALSE;
-  $handler->display->display_options['access']['type'] = 'flag_friend';
+
+  /* Display: Defaults */
+  $handler = $view->new_display('default', 'Defaults', 'default');
+  $handler->display->display_options['access']['type'] = 'perm';
   $handler->display->display_options['cache']['type'] = 'none';
   $handler->display->display_options['query']['type'] = 'views_query';
+  $handler->display->display_options['query']['options']['distinct'] = TRUE;
   $handler->display->display_options['exposed_form']['type'] = 'basic';
   $handler->display->display_options['pager']['type'] = 'full';
-  $handler->display->display_options['pager']['options']['items_per_page'] = '10';
   $handler->display->display_options['style_plugin'] = 'table';
   $handler->display->display_options['style_options']['columns'] = array(
-    'name' => 'name',
     'picture' => 'picture',
+    'name' => 'picture',
+    'message' => 'message',
+    'ops' => 'ops',
+    'uid' => 'ops',
   );
   $handler->display->display_options['style_options']['default'] = '-1';
   $handler->display->display_options['style_options']['info'] = array(
-    'name' => array(
+    'picture' => array(
       'sortable' => 0,
-      'default_sort_order' => 'asc',
-      'align' => '',
       'separator' => '',
-      'empty_column' => 0,
     ),
-    'picture' => array(
+    'name' => array(
       'sortable' => 0,
-      'default_sort_order' => 'asc',
-      'align' => '',
       'separator' => '',
-      'empty_column' => 0,
+    ),
+    'message' => array(
+      'separator' => '',
+    ),
+    'ops' => array(
+      'separator' => '',
+    ),
+    'uid' => array(
+      'separator' => '',
     ),
   );
-  /* No results behavior: Global: Text area */
-  $handler->display->display_options['empty']['area']['id'] = 'area';
-  $handler->display->display_options['empty']['area']['table'] = 'views';
-  $handler->display->display_options['empty']['area']['field'] = 'area';
-  $handler->display->display_options['empty']['area']['empty'] = TRUE;
-  $handler->display->display_options['empty']['area']['content'] = 'No friends have been added.';
-  $handler->display->display_options['empty']['area']['format'] = 'filtered_html';
-  /* Relationship: Flags: friend */
-  $handler->display->display_options['relationships']['flag_content_rel']['id'] = 'flag_content_rel';
-  $handler->display->display_options['relationships']['flag_content_rel']['table'] = 'users';
-  $handler->display->display_options['relationships']['flag_content_rel']['field'] = 'flag_content_rel';
-  $handler->display->display_options['relationships']['flag_content_rel']['flag'] = 'friend';
-  /* Field: User: Picture */
-  $handler->display->display_options['fields']['picture']['id'] = 'picture';
-  $handler->display->display_options['fields']['picture']['table'] = 'users';
-  $handler->display->display_options['fields']['picture']['field'] = 'picture';
-  $handler->display->display_options['fields']['picture']['label'] = '';
-  $handler->display->display_options['fields']['picture']['element_label_colon'] = FALSE;
+  $handler->display->display_options['style_options']['override'] = 1;
+  $handler->display->display_options['style_options']['sticky'] = 0;
+  /* Empty text: Global: Text area */
+  $handler->display->display_options['empty']['text']['id'] = 'area';
+  $handler->display->display_options['empty']['text']['table'] = 'views';
+  $handler->display->display_options['empty']['text']['field'] = 'area';
+  $handler->display->display_options['empty']['text']['empty'] = FALSE;
+  $handler->display->display_options['empty']['text']['content'] = 'No Friends have been added.';
+  $handler->display->display_options['empty']['text']['format'] = '1';
+  /* Relationship: Flag Friend: friend */
+  $handler->display->display_options['relationships']['flag_friend_content_rel']['id'] = 'flag_friend_content_rel';
+  $handler->display->display_options['relationships']['flag_friend_content_rel']['table'] = 'users';
+  $handler->display->display_options['relationships']['flag_friend_content_rel']['field'] = 'flag_friend_content_rel';
+  $handler->display->display_options['relationships']['flag_friend_content_rel']['flag'] = 'friend';
+  $handler->display->display_options['relationships']['flag_friend_content_rel']['user_scope'] = 'any';
   /* Field: User: Name */
   $handler->display->display_options['fields']['name']['id'] = 'name';
   $handler->display->display_options['fields']['name']['table'] = 'users';
   $handler->display->display_options['fields']['name']['field'] = 'name';
-  $handler->display->display_options['fields']['name']['relationship'] = 'uid';
-  $handler->display->display_options['fields']['name']['label'] = 'Requester';
-  $handler->display->display_options['fields']['name']['alter']['word_boundary'] = FALSE;
-  $handler->display->display_options['fields']['name']['alter']['ellipsis'] = FALSE;
-  $handler->display->display_options['fields']['name']['element_label_colon'] = FALSE;
+  $handler->display->display_options['fields']['name']['link_to_user'] = 1;
   /* Field: Flags: Flag link */
   $handler->display->display_options['fields']['ops']['id'] = 'ops';
   $handler->display->display_options['fields']['ops']['table'] = 'flag_content';
   $handler->display->display_options['fields']['ops']['field'] = 'ops';
-  $handler->display->display_options['fields']['ops']['relationship'] = 'flag_content_rel';
-  /* Sort criterion: User: Created date */
-  $handler->display->display_options['sorts']['created']['id'] = 'created';
-  $handler->display->display_options['sorts']['created']['table'] = 'users';
-  $handler->display->display_options['sorts']['created']['field'] = 'created';
-  $handler->display->display_options['sorts']['created']['order'] = 'DESC';
-  /* Filter criterion: User: Active */
+  $handler->display->display_options['fields']['ops']['relationship'] = 'flag_friend_content_rel';
+  /* Field: Flag friend: Flag friend links */
+  $handler->display->display_options['fields']['uid']['id'] = 'uid';
+  $handler->display->display_options['fields']['uid']['table'] = 'flag_friend';
+  $handler->display->display_options['fields']['uid']['field'] = 'uid';
+  /* Argument: Flag friend: Friends of */
+  $handler->display->display_options['arguments']['friend_uid']['id'] = 'friend_uid';
+  $handler->display->display_options['arguments']['friend_uid']['table'] = 'flag_friend';
+  $handler->display->display_options['arguments']['friend_uid']['field'] = 'friend_uid';
+  $handler->display->display_options['arguments']['friend_uid']['style_plugin'] = 'default_summary';
+  $handler->display->display_options['arguments']['friend_uid']['default_argument_type'] = 'fixed';
+  /* Filter: User: Active */
   $handler->display->display_options['filters']['status']['id'] = 'status';
   $handler->display->display_options['filters']['status']['table'] = 'users';
   $handler->display->display_options['filters']['status']['field'] = 'status';
   $handler->display->display_options['filters']['status']['value'] = '1';
-  $handler->display->display_options['filters']['status']['group'] = 1;
   $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
-  /* Filter criterion: Flag friend: Relationship Status */
-  $handler->display->display_options['filters']['status_1']['id'] = 'status_1';
-  $handler->display->display_options['filters']['status_1']['table'] = 'flag_friend';
-  $handler->display->display_options['filters']['status_1']['field'] = 'status';
-  $handler->display->display_options['filters']['status_1']['relationship'] = 'flag_content_rel';
-  $handler->display->display_options['filters']['status_1']['value'] = '1';
-  
-  /* Display: Page: All Friends */
-  $handler = $view->new_display('page', 'Page: All Friends', 'page');
-  $handler->display->display_options['display_description'] = 'Listing of all approved friends';
+
+  /* Display: Page (friends) */
+  $handler = $view->new_display('page', 'Page (friends)', 'page_1');
+  $handler->display->display_options['defaults']['title'] = FALSE;
+  $handler->display->display_options['title'] = 'Friends';
+  $handler->display->display_options['defaults']['relationships'] = FALSE;
   $handler->display->display_options['defaults']['fields'] = FALSE;
   /* Field: User: Picture */
   $handler->display->display_options['fields']['picture']['id'] = 'picture';
   $handler->display->display_options['fields']['picture']['table'] = 'users';
   $handler->display->display_options['fields']['picture']['field'] = 'picture';
-  $handler->display->display_options['fields']['picture']['label'] = '';
-  $handler->display->display_options['fields']['picture']['element_label_colon'] = FALSE;
+  $handler->display->display_options['fields']['picture']['label'] = 'Friend';
   /* Field: User: Name */
   $handler->display->display_options['fields']['name']['id'] = 'name';
   $handler->display->display_options['fields']['name']['table'] = 'users';
   $handler->display->display_options['fields']['name']['field'] = 'name';
-  $handler->display->display_options['fields']['name']['label'] = 'User';
-  $handler->display->display_options['fields']['name']['alter']['word_boundary'] = FALSE;
-  $handler->display->display_options['fields']['name']['alter']['ellipsis'] = FALSE;
-  /* Field: Flags: Flag link */
-  $handler->display->display_options['fields']['ops']['id'] = 'ops';
-  $handler->display->display_options['fields']['ops']['table'] = 'flag_content';
-  $handler->display->display_options['fields']['ops']['field'] = 'ops';
-  $handler->display->display_options['fields']['ops']['relationship'] = 'flag_content_rel';
+  $handler->display->display_options['fields']['name']['link_to_user'] = 1;
+  /* Field: Flag friend: Flag friend links */
+  $handler->display->display_options['fields']['uid']['id'] = 'uid';
+  $handler->display->display_options['fields']['uid']['table'] = 'flag_friend';
+  $handler->display->display_options['fields']['uid']['field'] = 'uid';
+  $handler->display->display_options['fields']['uid']['label'] = 'Actions';
+  $handler->display->display_options['defaults']['arguments'] = FALSE;
+  /* Argument: Flag friend: Friends of */
+  $handler->display->display_options['arguments']['friend_uid']['id'] = 'friend_uid';
+  $handler->display->display_options['arguments']['friend_uid']['table'] = 'flag_friend';
+  $handler->display->display_options['arguments']['friend_uid']['field'] = 'friend_uid';
+  $handler->display->display_options['arguments']['friend_uid']['default_action'] = 'default';
+  $handler->display->display_options['arguments']['friend_uid']['style_plugin'] = 'default_summary';
+  $handler->display->display_options['arguments']['friend_uid']['default_argument_type'] = 'user';
+  $handler->display->display_options['arguments']['friend_uid']['default_argument_options']['user'] = FALSE;
+  $handler->display->display_options['arguments']['friend_uid']['break_phrase'] = 0;
+  $handler->display->display_options['arguments']['friend_uid']['not'] = 0;
   $handler->display->display_options['path'] = 'user/%/friends/all';
   $handler->display->display_options['menu']['type'] = 'default tab';
   $handler->display->display_options['menu']['title'] = 'View All Friends';
-  $handler->display->display_options['menu']['description'] = 'View all of your friends';
   $handler->display->display_options['menu']['weight'] = '-10';
-  $handler->display->display_options['menu']['name'] = 'user-menu';
-  $handler->display->display_options['menu']['context'] = 0;
-  $handler->display->display_options['menu']['context_only_inline'] = 0;
   $handler->display->display_options['tab_options']['type'] = 'tab';
   $handler->display->display_options['tab_options']['title'] = 'Friends';
   $handler->display->display_options['tab_options']['weight'] = '0';
-  
-  /* Display: Page: Pending Friends */
-  $handler = $view->new_display('page', 'Page: Pending Friends', 'page_1');
+
+  /* Display: Page (pending) */
+  $handler = $view->new_display('page', 'Page (pending)', 'page_2');
   $handler->display->display_options['defaults']['title'] = FALSE;
-  $handler->display->display_options['title'] = 'Pending Friends';
-  $handler->display->display_options['display_description'] = 'List of all pending friend relationships';
-  $handler->display->display_options['defaults']['access'] = FALSE;
-  $handler->display->display_options['access']['type'] = 'flag_friend';
+  $handler->display->display_options['title'] = 'Friend Requests';
+  $handler->display->display_options['defaults']['header'] = FALSE;
+  /* Header: Global: Text area */
+  $handler->display->display_options['header']['text']['id'] = 'area';
+  $handler->display->display_options['header']['text']['table'] = 'views';
+  $handler->display->display_options['header']['text']['field'] = 'area';
+  $handler->display->display_options['header']['text']['empty'] = FALSE;
+  $handler->display->display_options['header']['text']['content'] = 'These are users who would like to be your friend.';
+  $handler->display->display_options['header']['text']['format'] = '1';
   $handler->display->display_options['defaults']['empty'] = FALSE;
-  /* No results behavior: Global: Text area */
-  $handler->display->display_options['empty']['area']['id'] = 'area';
-  $handler->display->display_options['empty']['area']['table'] = 'views';
-  $handler->display->display_options['empty']['area']['field'] = 'area';
-  $handler->display->display_options['empty']['area']['empty'] = TRUE;
-  $handler->display->display_options['empty']['area']['content'] = 'No pending friends.';
-  $handler->display->display_options['empty']['area']['format'] = 'filtered_html';
+  /* Empty text: Global: Text area */
+  $handler->display->display_options['empty']['text']['id'] = 'area';
+  $handler->display->display_options['empty']['text']['table'] = 'views';
+  $handler->display->display_options['empty']['text']['field'] = 'area';
+  $handler->display->display_options['empty']['text']['empty'] = FALSE;
+  $handler->display->display_options['empty']['text']['content'] = 'No Friend Requests.';
   $handler->display->display_options['defaults']['fields'] = FALSE;
   /* Field: User: Picture */
   $handler->display->display_options['fields']['picture']['id'] = 'picture';
   $handler->display->display_options['fields']['picture']['table'] = 'users';
   $handler->display->display_options['fields']['picture']['field'] = 'picture';
-  $handler->display->display_options['fields']['picture']['label'] = '';
-  $handler->display->display_options['fields']['picture']['element_label_colon'] = FALSE;
+  $handler->display->display_options['fields']['picture']['label'] = 'User';
   /* Field: User: Name */
   $handler->display->display_options['fields']['name']['id'] = 'name';
   $handler->display->display_options['fields']['name']['table'] = 'users';
   $handler->display->display_options['fields']['name']['field'] = 'name';
-  $handler->display->display_options['fields']['name']['label'] = 'User';
-  $handler->display->display_options['fields']['name']['alter']['word_boundary'] = FALSE;
-  $handler->display->display_options['fields']['name']['alter']['ellipsis'] = FALSE;
+  $handler->display->display_options['fields']['name']['link_to_user'] = 1;
+  /* Field: Flag friend: Message */
+  $handler->display->display_options['fields']['message']['id'] = 'message';
+  $handler->display->display_options['fields']['message']['table'] = 'flag_friend_message';
+  $handler->display->display_options['fields']['message']['field'] = 'message';
+  $handler->display->display_options['fields']['message']['relationship'] = 'flag_friend_content_rel';
   /* Field: Flags: Flag link */
   $handler->display->display_options['fields']['ops']['id'] = 'ops';
   $handler->display->display_options['fields']['ops']['table'] = 'flag_content';
   $handler->display->display_options['fields']['ops']['field'] = 'ops';
-  $handler->display->display_options['fields']['ops']['relationship'] = 'flag_content_rel';
-  $handler->display->display_options['defaults']['filter_groups'] = FALSE;
-  $handler->display->display_options['defaults']['filters'] = FALSE;
-  /* Filter criterion: User: Active */
-  $handler->display->display_options['filters']['status']['id'] = 'status';
-  $handler->display->display_options['filters']['status']['table'] = 'users';
-  $handler->display->display_options['filters']['status']['field'] = 'status';
-  $handler->display->display_options['filters']['status']['value'] = '1';
-  $handler->display->display_options['filters']['status']['group'] = 1;
-  $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
-  /* Filter criterion: Flag friend: Relationship Status */
-  $handler->display->display_options['filters']['status_1']['id'] = 'status_1';
-  $handler->display->display_options['filters']['status_1']['table'] = 'flag_friend';
-  $handler->display->display_options['filters']['status_1']['field'] = 'status';
-  $handler->display->display_options['filters']['status_1']['relationship'] = 'flag_content_rel';
-  $handler->display->display_options['filters']['status_1']['value'] = '4';
+  $handler->display->display_options['fields']['ops']['relationship'] = 'flag_friend_content_rel';
+  $handler->display->display_options['fields']['ops']['label'] = 'Actions';
+  /* Field: Flag friend: Flag friend links */
+  $handler->display->display_options['fields']['uid']['id'] = 'uid';
+  $handler->display->display_options['fields']['uid']['table'] = 'flag_friend';
+  $handler->display->display_options['fields']['uid']['field'] = 'uid';
+  $handler->display->display_options['defaults']['arguments'] = FALSE;
+  /* Argument: Flags: Content ID */
+  $handler->display->display_options['arguments']['content_id']['id'] = 'content_id';
+  $handler->display->display_options['arguments']['content_id']['table'] = 'flag_content';
+  $handler->display->display_options['arguments']['content_id']['field'] = 'content_id';
+  $handler->display->display_options['arguments']['content_id']['relationship'] = 'flag_friend_content_rel';
+  $handler->display->display_options['arguments']['content_id']['default_action'] = 'default';
+  $handler->display->display_options['arguments']['content_id']['style_plugin'] = 'default_summary';
+  $handler->display->display_options['arguments']['content_id']['default_argument_type'] = 'user';
+  $handler->display->display_options['arguments']['content_id']['default_argument_options']['user'] = FALSE;
+  $handler->display->display_options['arguments']['content_id']['validate_type'] = 'php';
+  $handler->display->display_options['arguments']['content_id']['validate_options']['code'] = 'if ($argument !== $GLOBALS[\'user\']->uid && !user_access(\'administer users\')) {
+                                        return FALSE;
+                                      }
+                                      return TRUE;';
+  $handler->display->display_options['arguments']['content_id']['break_phrase'] = 0;
+  $handler->display->display_options['arguments']['content_id']['not'] = 0;
   $handler->display->display_options['path'] = 'user/%/friends/pending';
   $handler->display->display_options['menu']['type'] = 'tab';
-  $handler->display->display_options['menu']['title'] = 'Pending Friends';
-  $handler->display->display_options['menu']['description'] = 'Pending Friend Requests';
+  $handler->display->display_options['menu']['title'] = 'Friend Requests';
   $handler->display->display_options['menu']['weight'] = '0';
-  $handler->display->display_options['menu']['context'] = 0;
-  $handler->display->display_options['menu']['context_only_inline'] = 0;
-  
-  /* Display: Page: Friend Requests */
-  $handler = $view->new_display('page', 'Page: Friend Requests', 'page_2');
+
+  /* Display: Page (flagged) */
+  $handler = $view->new_display('page', 'Page (flagged)', 'page_3');
   $handler->display->display_options['defaults']['title'] = FALSE;
-  $handler->display->display_options['title'] = 'Friend Requests';
-  $handler->display->display_options['display_description'] = 'Friends flagged by the current user';
-  $handler->display->display_options['defaults']['access'] = FALSE;
-  $handler->display->display_options['access']['type'] = 'flag_friend';
+  $handler->display->display_options['title'] = 'Awaiting Friend Approvals';
+  $handler->display->display_options['defaults']['header'] = FALSE;
+  /* Header: Global: Text area */
+  $handler->display->display_options['header']['text']['id'] = 'area';
+  $handler->display->display_options['header']['text']['table'] = 'views';
+  $handler->display->display_options['header']['text']['field'] = 'area';
+  $handler->display->display_options['header']['text']['empty'] = TRUE;
+  $handler->display->display_options['header']['text']['content'] = 'These are users who you have requested to be friends with.';
+  $handler->display->display_options['header']['text']['format'] = '1';
   $handler->display->display_options['defaults']['empty'] = FALSE;
-  /* No results behavior: Global: Text area */
-  $handler->display->display_options['empty']['area']['id'] = 'area';
-  $handler->display->display_options['empty']['area']['table'] = 'views';
-  $handler->display->display_options['empty']['area']['field'] = 'area';
-  $handler->display->display_options['empty']['area']['empty'] = TRUE;
-  $handler->display->display_options['empty']['area']['content'] = 'No friend requests.';
-  $handler->display->display_options['empty']['area']['format'] = 'filtered_html';
+  /* Empty text: Global: Text area */
+  $handler->display->display_options['empty']['text']['id'] = 'area';
+  $handler->display->display_options['empty']['text']['table'] = 'views';
+  $handler->display->display_options['empty']['text']['field'] = 'area';
+  $handler->display->display_options['empty']['text']['empty'] = FALSE;
+  $handler->display->display_options['empty']['text']['content'] = 'No Friend Requests.';
   $handler->display->display_options['defaults']['relationships'] = FALSE;
-  /* Relationship: Flags: User's flagged content */
-  $handler->display->display_options['relationships']['flag_user_content_rel']['id'] = 'flag_user_content_rel';
-  $handler->display->display_options['relationships']['flag_user_content_rel']['table'] = 'users';
-  $handler->display->display_options['relationships']['flag_user_content_rel']['field'] = 'flag_user_content_rel';
-  $handler->display->display_options['relationships']['flag_user_content_rel']['flag'] = 'friend';
+  /* Relationship: Flags: friend */
+  $handler->display->display_options['relationships']['flag_content_rel']['id'] = 'flag_content_rel';
+  $handler->display->display_options['relationships']['flag_content_rel']['table'] = 'users';
+  $handler->display->display_options['relationships']['flag_content_rel']['field'] = 'flag_content_rel';
+  $handler->display->display_options['relationships']['flag_content_rel']['flag'] = 'friend';
+  $handler->display->display_options['relationships']['flag_content_rel']['user_scope'] = 'any';
   /* Relationship: Flags: User */
   $handler->display->display_options['relationships']['uid']['id'] = 'uid';
   $handler->display->display_options['relationships']['uid']['table'] = 'flag_content';
   $handler->display->display_options['relationships']['uid']['field'] = 'uid';
-  $handler->display->display_options['relationships']['uid']['relationship'] = 'flag_user_content_rel';
+  $handler->display->display_options['relationships']['uid']['relationship'] = 'flag_content_rel';
+  $handler->display->display_options['relationships']['uid']['required'] = 0;
   $handler->display->display_options['defaults']['fields'] = FALSE;
-  /* Field: User: Name */
-  $handler->display->display_options['fields']['name']['id'] = 'name';
-  $handler->display->display_options['fields']['name']['table'] = 'users';
-  $handler->display->display_options['fields']['name']['field'] = 'name';
   /* Field: User: Picture */
   $handler->display->display_options['fields']['picture']['id'] = 'picture';
   $handler->display->display_options['fields']['picture']['table'] = 'users';
   $handler->display->display_options['fields']['picture']['field'] = 'picture';
-  /* Field: Flag friend: Friend Link */
-  $handler->display->display_options['fields']['friend_link']['id'] = 'friend_link';
-  $handler->display->display_options['fields']['friend_link']['table'] = 'flag_friend';
-  $handler->display->display_options['fields']['friend_link']['field'] = 'friend_link';
-  $handler->display->display_options['fields']['friend_link']['relationship'] = 'flag_user_content_rel';
+  $handler->display->display_options['fields']['picture']['label'] = 'User';
+  /* Field: User: Name */
+  $handler->display->display_options['fields']['name']['id'] = 'name';
+  $handler->display->display_options['fields']['name']['table'] = 'users';
+  $handler->display->display_options['fields']['name']['field'] = 'name';
+  $handler->display->display_options['fields']['name']['link_to_user'] = 1;
+  /* Field: Flag friend: Message */
+  $handler->display->display_options['fields']['message']['id'] = 'message';
+  $handler->display->display_options['fields']['message']['table'] = 'flag_friend_message';
+  $handler->display->display_options['fields']['message']['field'] = 'message';
+  $handler->display->display_options['fields']['message']['relationship'] = 'flag_content_rel';
+  /* Field: Flags: Flag link */
+  $handler->display->display_options['fields']['ops']['id'] = 'ops';
+  $handler->display->display_options['fields']['ops']['table'] = 'flag_content';
+  $handler->display->display_options['fields']['ops']['field'] = 'ops';
+  $handler->display->display_options['fields']['ops']['relationship'] = 'flag_content_rel';
+  $handler->display->display_options['fields']['ops']['label'] = 'Actions';
   $handler->display->display_options['defaults']['arguments'] = FALSE;
-  /* Contextual filter: Flags: Content ID */
-  $handler->display->display_options['arguments']['content_id']['id'] = 'content_id';
-  $handler->display->display_options['arguments']['content_id']['table'] = 'flag_content';
-  $handler->display->display_options['arguments']['content_id']['field'] = 'content_id';
-  $handler->display->display_options['arguments']['content_id']['relationship'] = 'flag_user_content_rel';
-  $handler->display->display_options['arguments']['content_id']['default_action'] = 'not found';
-  $handler->display->display_options['arguments']['content_id']['default_argument_type'] = 'fixed';
-  $handler->display->display_options['arguments']['content_id']['summary']['number_of_records'] = '0';
-  $handler->display->display_options['arguments']['content_id']['summary']['format'] = 'default_summary';
-  $handler->display->display_options['arguments']['content_id']['summary_options']['items_per_page'] = '25';
-  $handler->display->display_options['arguments']['content_id']['validate']['type'] = 'php';
-  $handler->display->display_options['arguments']['content_id']['validate_options']['code'] = 'global $user;
-  if ($user->uid == $handler->argument) {
-  return TRUE;
-  } else {
-  return FALSE;
-  }';
-  $handler->display->display_options['arguments']['content_id']['validate']['fail'] = 'access denied';
-  $handler->display->display_options['defaults']['filter_groups'] = FALSE;
-  $handler->display->display_options['defaults']['filters'] = FALSE;
-  /* Filter criterion: User: Active */
-  $handler->display->display_options['filters']['status']['id'] = 'status';
-  $handler->display->display_options['filters']['status']['table'] = 'users';
-  $handler->display->display_options['filters']['status']['field'] = 'status';
-  $handler->display->display_options['filters']['status']['value'] = '1';
-  $handler->display->display_options['filters']['status']['group'] = 1;
-  $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
-  /* Filter criterion: Flag friend: Relationship Status */
-  $handler->display->display_options['filters']['status_1']['id'] = 'status_1';
-  $handler->display->display_options['filters']['status_1']['table'] = 'flag_friend';
-  $handler->display->display_options['filters']['status_1']['field'] = 'status';
-  $handler->display->display_options['filters']['status_1']['relationship'] = 'flag_user_content_rel';
-  $handler->display->display_options['filters']['status_1']['value'] = '4';
+  /* Argument: User: Uid */
+  $handler->display->display_options['arguments']['uid']['id'] = 'uid';
+  $handler->display->display_options['arguments']['uid']['table'] = 'users';
+  $handler->display->display_options['arguments']['uid']['field'] = 'uid';
+  $handler->display->display_options['arguments']['uid']['relationship'] = 'uid';
+  $handler->display->display_options['arguments']['uid']['default_action'] = 'default';
+  $handler->display->display_options['arguments']['uid']['style_plugin'] = 'default_summary';
+  $handler->display->display_options['arguments']['uid']['default_argument_type'] = 'user';
+  $handler->display->display_options['arguments']['uid']['default_argument_options']['user'] = FALSE;
+  $handler->display->display_options['arguments']['uid']['validate_type'] = 'php';
+  $handler->display->display_options['arguments']['uid']['validate_options']['code'] = 'if ($argument !== $GLOBALS[\'user\']->uid && !user_access(\'administer users\')) {
+      return FALSE;
+    }
+    return TRUE;';
+  $handler->display->display_options['arguments']['uid']['break_phrase'] = 0;
+  $handler->display->display_options['arguments']['uid']['not'] = 0;
   $handler->display->display_options['path'] = 'user/%/friends/flagged';
   $handler->display->display_options['menu']['type'] = 'tab';
-  $handler->display->display_options['menu']['title'] = 'Friend Requests';
-  $handler->display->display_options['menu']['description'] = 'Friends you have flagged';
-  $handler->display->display_options['menu']['weight'] = '10';
-  $handler->display->display_options['menu']['context'] = 0;
-  $handler->display->display_options['menu']['context_only_inline'] = 0;
-  
-  /* Display: Block: Friends */
-  $handler = $view->new_display('block', 'Block: Friends', 'block_1');
-  $handler->display->display_options['defaults']['pager'] = FALSE;
-  $handler->display->display_options['pager']['type'] = 'full';
-  $handler->display->display_options['pager']['options']['items_per_page'] = '5';
-  $handler->display->display_options['pager']['options']['offset'] = '0';
-  $handler->display->display_options['pager']['options']['id'] = '0';
-  $handler->display->display_options['pager']['options']['quantity'] = '9';
+  $handler->display->display_options['menu']['title'] = 'Awaiting Friend Approvals';
+  $handler->display->display_options['menu']['weight'] = '0';
+
+  /* Display: Current user's Friends block */
+  $handler = $view->new_display('block', 'Current user\'s Friends block', 'block_1');
+  $handler->display->display_options['defaults']['items_per_page'] = FALSE;
+  $handler->display->display_options['defaults']['use_more'] = FALSE;
+  $handler->display->display_options['use_more'] = TRUE;
+  $handler->display->display_options['defaults']['relationships'] = FALSE;
   $handler->display->display_options['defaults']['fields'] = FALSE;
-  /* Field: User: Picture */
-  $handler->display->display_options['fields']['picture']['id'] = 'picture';
-  $handler->display->display_options['fields']['picture']['table'] = 'users';
-  $handler->display->display_options['fields']['picture']['field'] = 'picture';
-  $handler->display->display_options['fields']['picture']['label'] = '';
-  $handler->display->display_options['fields']['picture']['element_label_colon'] = FALSE;
   /* Field: User: Name */
   $handler->display->display_options['fields']['name']['id'] = 'name';
   $handler->display->display_options['fields']['name']['table'] = 'users';
   $handler->display->display_options['fields']['name']['field'] = 'name';
-  $handler->display->display_options['fields']['name']['relationship'] = 'uid';
-  $handler->display->display_options['fields']['name']['label'] = 'Requester';
-  $handler->display->display_options['fields']['name']['alter']['word_boundary'] = FALSE;
-  $handler->display->display_options['fields']['name']['alter']['ellipsis'] = FALSE;
-  $handler->display->display_options['fields']['name']['element_label_colon'] = FALSE;
-  $handler->display->display_options['block_description'] = 'Flag Friend Friends';
+  $handler->display->display_options['fields']['name']['link_to_user'] = 1;
+  /* Field: Flag friend: Flag friend links */
+  $handler->display->display_options['fields']['uid']['id'] = 'uid';
+  $handler->display->display_options['fields']['uid']['table'] = 'flag_friend';
+  $handler->display->display_options['fields']['uid']['field'] = 'uid';
+  $handler->display->display_options['defaults']['arguments'] = FALSE;
+  /* Argument: Flag friend: Friends of */
+  $handler->display->display_options['arguments']['friend_uid']['id'] = 'friend_uid';
+  $handler->display->display_options['arguments']['friend_uid']['table'] = 'flag_friend';
+  $handler->display->display_options['arguments']['friend_uid']['field'] = 'friend_uid';
+  $handler->display->display_options['arguments']['friend_uid']['default_action'] = 'default';
+  $handler->display->display_options['arguments']['friend_uid']['style_plugin'] = 'default_summary';
+  $handler->display->display_options['arguments']['friend_uid']['default_argument_type'] = 'current_user';
+  $handler->display->display_options['arguments']['friend_uid']['break_phrase'] = 0;
+  $handler->display->display_options['arguments']['friend_uid']['not'] = 0;
+  $translatables['friends'] = array(
+    t('Defaults'),
+    t('more'),
+    t('Apply'),
+    t('Reset'),
+    t('Sort By'),
+    t('Asc'),
+    t('Desc'),
+    t('Items per page'),
+    t('- All -'),
+    t('Offset'),
+    t('No Friends have been added.'),
+    t('flag friend'),
+    t('Name'),
+    t('Flag link'),
+    t('Flag friend links'),
+    t('All'),
+    t('Page (friends)'),
+    t('Friends'),
+    t('Friend'),
+    t('Actions'),
+    t('Page (pending)'),
+    t('Friend Requests'),
+    t('These are users who would like to be your friend.'),
+    t('No Friend Requests.'),
+    t('User'),
+    t('Message'),
+    t('Page (flagged)'),
+    t('Awaiting Friend Approvals'),
+    t('These are users who you have requested to be friends with.'),
+    t('flag'),
+    t('Flag user'),
+    t('Current user\'s Friends block'),
+  );
   $views[$view->name] = $view;
   return $views;
 }
diff --git a/includes/flag_friend_handler_argument_numeric.inc b/includes/flag_friend_handler_argument_numeric.inc
new file mode 100644
index 0000000..12ab63c
--- /dev/null
+++ b/includes/flag_friend_handler_argument_numeric.inc
@@ -0,0 +1,81 @@
+<?php
+
+/**
+ * @file
+ * Contains the custom argument handler for the flag_friend table.
+ */
+
+/**
+ * Provides a view argument handler.
+ *
+ * @ingroup views
+ */
+class flag_friend_handler_argument_numeric extends views_handler_argument_numeric {
+  function option_definition() {
+    $options = parent::option_definition();
+    $options['flag_friend_include_arg_user'] = array(
+      'default' => 0,
+      'translatable' => FALSE,
+    );
+    return $options;
+  }
+
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+    $options = $this->options;
+    $form['flag_friend_include_arg_user'] = array(
+      '#title' => t('Include argument user'),
+      '#description' => t('Include results from the user whose friends will be shown.'),
+      '#type' => 'checkbox',
+      '#default_value' => $options['flag_friend_include_arg_user'],
+    );
+  }
+
+  function query($group_by = FALSE) {
+    if (!empty($this->options['break_phrase'])) {
+      views_break_phrase($this->argument, $this);
+    }
+    else {
+      $this->value = array((int) $this->argument);
+    }
+
+    //Determine operator
+    $operator = empty($this->options['not']) ? 'IN' : 'NOT IN';
+
+    //Detect  if $value is array or not
+    if (is_array($this->value)) {
+      $value = $this->value;
+    }
+    else {
+      $value = array($this->argument);
+    }
+
+    //Build array of all friends
+    $all_friends = array();
+    $all_friends_of = array();
+    $all_friends += db_select('flag_friend', 'f')->fields('f', array('friend_uid'))->condition('uid', $value, $operator)->execute()->fetchCol();
+    $all_friends_of += db_select('flag_friend', 'f')->fields('f', array('uid'))->condition('friend_uid', $value, $operator)->execute()->fetchCol();
+
+    $all_friends = array_merge($all_friends, $all_friends_of);
+
+    //Include argument if option is set.
+    if ($this->options['flag_friend_include_arg_user']) {
+      $all_friends[] = (int) $this->argument;
+    }
+
+    //If no friends, pass something or SQL borks
+    if (count($all_friends) === 0) {
+      $all_friends = array(0);
+    }
+
+    //Determine field
+    if ($this->view->base_table != 'users') {
+      $field .= 'users_' . $this->view->base_table;
+    }
+    else {
+      $field = 'users';
+    }
+
+    $this->query->add_where(0, $field . ".uid", $all_friends);
+  }
+}
diff --git a/includes/flag_friend_handler_field_links.inc b/includes/flag_friend_handler_field_links.inc
new file mode 100644
index 0000000..8b2f324
--- /dev/null
+++ b/includes/flag_friend_handler_field_links.inc
@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * @file
+ * Contains the flag friend Ops field handler.
+ */
+
+/**
+ * Views field handler for the Flag friend operations links (remove/pending/approve/deny).
+ *
+ * @ingroup views
+ */
+class flag_friend_handler_field_links extends views_handler_field {
+  function render($values) {
+    global $user;
+    $flag = flag_get_flag('friend');
+    $content_id = $values->uid;
+    // what's the status?
+    $status = flag_friend_determine_friend_status($flag, $user->uid, $content_id);
+    $link_type = ($status == FLAG_FRIEND_APPROVAL) ? 'unflag' : 'unfriend';
+    if ($this->view->args[0] == $user->uid) {
+      return flag_friend_create_link($link_type, $content_id);
+    }
+  }
+}
diff --git a/includes/flag_friend_plugin_access_pending_requested.inc b/includes/flag_friend_plugin_access_pending_requested.inc
deleted file mode 100644
index 9d3c4ba..0000000
--- a/includes/flag_friend_plugin_access_pending_requested.inc
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php 
-
-/**
- * @file
- * Definition of flag_friend_views_plugin_access_pending_requested.
- */
-
-/**
- * @see hook_views_plugins()
- */
-
-class flag_friend_plugin_access_pending_requested extends views_plugin_access {
-  function access($account) {
-    return flag_friend_views_access();
-  }
-
-  function get_access_callback() {
-    return array('flag_friend_views_access');
-  }
-}
\ No newline at end of file
diff --git a/includes/flag_friend_views_handler_field_links.inc b/includes/flag_friend_views_handler_field_links.inc
deleted file mode 100644
index f4294a0..0000000
--- a/includes/flag_friend_views_handler_field_links.inc
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains the flag friend Ops field handler.
- */
-
-/**
- * Views field handler for the Flag friend operations link when a user has requested
- * to be the friend of the logged in user.
- * 
- * From flag_friend.module
- * FLAG_FRIEND_BOTH 0 - Users are friends
- * FLAG_FRIEND_FLAGGED 1 - Users are friends
- * FLAG_FRIEND_UNFLAGGED 2 - Neither user is flagged as a friend
- * FLAG_FRIEND_APPROVAL 3 - User has been flagged, pending their approval
- * FLAG_FRIEND_PENDING 4 - 1 user has flagged the other user
- *
- * @ingroup views
- */
-class flag_friend_views_handler_field_links extends flag_handler_field_ops {
-  function render($values) {
-    global $user;
-    $flag = flag_get_flag('friend');
-    $content_id = $values->uid;
-    // what's the status?
-    $status = flag_friend_determine_friend_status($flag, $user->uid, $content_id);
-    if ($status == FLAG_FRIEND_PENDING) {
-      $link = flag_create_link('friend', $content_id);
-      $link .= ' ' . flag_friend_create_link('friend', $content_id);
-      return $link;
-    }
-  }
-}
\ No newline at end of file
diff --git a/includes/flag_friend_views_handler_field_status.inc b/includes/flag_friend_views_handler_field_status.inc
deleted file mode 100644
index d049693..0000000
--- a/includes/flag_friend_views_handler_field_status.inc
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-/**
- * @file
- * Definition of flag_friend_views_handler_field.
- */
-
-/**
- * A handler to render the appropriate relationship name as defined by
- * the user.
- * 
- * From flag_friend.module
- * FLAG_FRIEND_BOTH 0 - Users are friends
- * FLAG_FRIEND_FLAGGED 1 - Users are friends
- * FLAG_FRIEND_UNFLAGGED 2 - Neither user is flagged as a friend
- * FLAG_FRIEND_APPROVAL 3 - User has been flagged, pending their approval
- * FLAG_FRIEND_PENDING 4 - 1 user has flagged the other user
- *
- * @ingroup views_field_handlers
- */
-class flag_friend_views_handler_field extends views_handler_field {
-
-  function option_definition() {
-    $options = parent::option_definition();
-    
-    $options['friends'] = array('default' => 'Friends');
-    $options['not_friends'] = array('default' => 'Not friends');
-    $options['pending_friends'] = array('default' => 'Pending');
-    
-    return $options;
-  }
-
-  function options_form(&$form, &$form_state) {
-    $form['friends'] = array (
-      '#type' => 'textfield',
-      '#title' => 'Approved relationship name',
-      '#default_value' => $this->options['friends'],
-    );
-    
-    $form['not_friends'] = array (
-      '#type' => 'textfield',
-      '#title' => 'No relationship name',
-      '#default_value' => $this->options['not_friends'],
-    );
-    
-    $form['pending_friends'] = array (
-      '#type' => 'textfield',
-      '#title' => 'Pending relationship name',
-      '#default_value' => $this->options['pending_friends'],
-    );
-    
-    parent::options_form($form, $form_state);
-  }
-
-  function render($values) {
-    $alias = $this->field_alias;
-    switch ($values->$alias) {
-    case '0' :
-    case '1' :
-      return check_plain($this->options['friends']);
-      break;
-    case '2' :
-      return check_plain($this->options['not_friends']);
-      break;
-    case '3' :
-    case '4' :
-      return check_plain($this->options['pending_friends']);
-    }
-  }
-}
\ No newline at end of file
diff --git a/includes/flag_friend_views_handler_filter_status.inc b/includes/flag_friend_views_handler_filter_status.inc
deleted file mode 100644
index 32f6468..0000000
--- a/includes/flag_friend_views_handler_filter_status.inc
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/**
- * @file
- * Definition of flag_friend_views_handler_filter_status.
- */
-
-/**
- * Filter friends based on relationship status
- * 
- * From flag_friend.module
- * FLAG_FRIEND_BOTH 0 - Users are friends
- * FLAG_FRIEND_FLAGGED 1 - Users are friends
- * FLAG_FRIEND_UNFLAGGED 2 - Neither user is flagged as a friend
- * FLAG_FRIEND_APPROVAL 3 - User has been flagged, pending their approval
- * FLAG_FRIEND_PENDING 4 - 1 user has flagged the other user
- *
- * @ingroup views_filter_handlers
- */
-class flag_friend_views_handler_filter_status extends views_handler_filter {
-  function option_definition() {
-    $options = parent::option_definition();
-    unset($options['value']);
-    $options['value']['default'] = 1;
-    return $options;
-  }
-
-  function value_form(&$form, &$form_state) {
-    parent::value_form($form, $form_state);
-    
-    $form['value'] = array(
-      '#type' => 'radios',
-      '#title' => t('Relationship Status'),
-      '#options' => array(
-        '1' => t('Friends'),
-        '4' => t('Pending'),
-      ),
-      '#default_value' => !empty($this->value['type']) ? $this->value['type'] : 1,
-    );
-  }
-}
\ No newline at end of file
