diff --git a/user_relationships_ui/user_relationships_ui.forms.inc b/user_relationships_ui/user_relationships_ui.forms.inc
index 83eb864..6ef5475 100644
--- a/user_relationships_ui/user_relationships_ui.forms.inc
+++ b/user_relationships_ui/user_relationships_ui.forms.inc
@@ -10,13 +10,13 @@ module_load_include('inc', 'user_relationships_ui', 'user_relationships_ui.actio
  * Request new user to user relationship
  * @param $requester user object for the requesting user
  * @param $requestee user object for the target user
- * @param $form_values array $form['values'] when called from form_alter() 
+ * @param $form_state array when called from form_alter() 
  */
-function user_relationships_ui_request_form($requester, $requestee, $form_values = NULL) {
+function user_relationships_ui_request_form($requester, $requestee, &$form_state = NULL) {
   $relationships = _user_relationships_ui_get_requestable_rtypes($requester, $requestee);
-  //try to find out desired relationship type
-  if (isset($form_values['rtid'])) {//given through form
-    $default_relationship = $form_values['rtid'];
+  // Check if a default relationship type is set.
+  if (isset($form_state['values']['rtid'])) {
+    $default_relationship = $form_state['values']['rtid'];
   }
   elseif (is_numeric(arg(3)) && user_relationships_type_load(arg(3))) {//given through URL arguments, e.g. relationship/{uid}/request/{rtid}
     $default_relationship = arg(3);
@@ -26,9 +26,9 @@ function user_relationships_ui_request_form($requester, $requestee, $form_values
     $default_relationship = $rtids[0];
   }
   //verify default relationship may be requested
-  $default_relationship = $relationships[$default_relationship] ? $default_relationship : NULL;
+  $default_relationship = isset($relationships[$default_relationship->rtid]) ? $default_relationship : NULL;
   
-  if (count($relationships)) {
+  if (count($relationships) > 1) {
     //hide control if the relationship is chosen
     if ($default_relationship && variable_get('user_relationships_show_direct_links', 1)) {
       $form['rtid'] = array(
@@ -45,6 +45,12 @@ function user_relationships_ui_request_form($requester, $requestee, $form_values
       );
     }
   }
+  else {
+    $form['rtid'] = array(
+      '#type' => 'value',
+      '#value' => $default_relationship,
+    );
+  }
   $form['requester'] = array(
     '#type'   => 'value',
     '#value'  => $requester->uid,
@@ -53,7 +59,6 @@ function user_relationships_ui_request_form($requester, $requestee, $form_values
     '#type'   => 'value',
     '#value'  => $requestee->uid,
   );
-
   return $form;
 }
 
@@ -61,8 +66,8 @@ function user_relationships_ui_request_form($requester, $requestee, $form_values
  * Ajax handler function that is utilized to display the form
  * in a popup rather than having the full page reload for the users
  */
-function user_relationships_ui_request_ajax($requestee) {
-  $form = drupal_get_form('user_relationships_ui_request', $requestee);
+function user_relationships_ui_request_ajax($requestee, $relationship_type = NULL) {
+  $form = drupal_get_form('user_relationships_ui_request', $requestee, $relationship_type);
   if (isset($_GET['ajax'])) {
     die($form);
   }
@@ -72,10 +77,10 @@ function user_relationships_ui_request_ajax($requestee) {
 /**
  * Request a new relationship with another user
  */
-function user_relationships_ui_request(&$form_state, $requestee) {
+function user_relationships_ui_request(&$form_state, $requestee, $relationship_type = NULL) {
   global $user;
   $requester = $user;
-
+  $form_state['values']['rtid'] = $relationship_type;
   $script = '<script type="text/javascript">setTimeout(\'Drupal.user_relationships_ui.hidePopup()\', 10000);</script>';
   if (empty($requestee->name)) {
     $form['error'] = array(
@@ -116,28 +121,33 @@ function user_relationships_ui_request(&$form_state, $requestee) {
   }
   // This is the default which means we will display the form
   $form = user_relationships_ui_request_form($requester, $requestee, $form_state);
-  if (!$form['rtid']) {
+  if (!$form_state['values']['rtid']) {
     $data['error'] = array(
       '#type' => 'markup',
       '#prefix' => '<div>',
       '#suffix' => '</div>',
       '#value' => user_relationships_ui_get_message('too_many_relationships') . $script
     );
+    
     return $data;
   }
   else {
+    if (isset($form_state['values']['rtid'])) {
+      $relationship_type = $form_state['values']['rtid'];
+    }
     if ($form['rtid']['#default_value']) {
-      $relationship = user_relationships_type_load($form['rtid']['#default_value']);
+      $relationship_type = user_relationships_type_load($form['rtid']['#default_value']);
     }
+    
+    $question =  $relationship->requires_approval 
+       ? t('Are you sure you wish to send a new %rel_name request to !name?', array('%name' => $requestee->name, '%rel_name' => ur_tt("user_relationships:rtid:$relationship_type->rtid:name", $relationship_type->name), '%rel_plural_name' => ur_tt("user_relationships:rtid:$relationship->rtid:plural_name", $relationship->plural_name), '!name' => theme('username', $requestee))) 
+       : t("Are you sure you want to become %name's %rel_name?", array('%name' => $requestee->name, '%rel_name' => ur_tt("user_relationships:rtid:$relationship_type->rtid:name", $relationship_type->name)));
+      t('How do you relate to %name?', array('%name' => $requestee->name));
     $form = confirm_form(
       $form,
       t('Request relationship'),
       "user/$requestee->uid",
-      $relationship ?
-      ($relationship->requires_approval 
-       ? t('Are you sure you wish to send a new %rel_name request to !name?', array('%name' => $requestee->name, '%rel_name' => ur_tt("user_relationships:rtid:$relationship->rtid:name", $relationship->name), '%rel_plural_name' => ur_tt("user_relationships:rtid:$relationship->rtid:plural_name", $relationship->plural_name), '!name' => theme('username', $requestee))) 
-       : t("Are you sure you want to become %name's %rel_name?", array('%name' => $requestee->name, '%rel_name' => ur_tt("user_relationships:rtid:$relationship->rtid:name", $relationship->name)))) :
-      t('How do you relate to %name?', array('%name' => $requestee->name)),
+     $question,
       t('Send'), t('Cancel'),
       'user_relationships_request_confirm'
     );
diff --git a/user_relationships_ui/user_relationships_ui.module b/user_relationships_ui/user_relationships_ui.module
index 022d6e1..c48efb7 100644
--- a/user_relationships_ui/user_relationships_ui.module
+++ b/user_relationships_ui/user_relationships_ui.module
@@ -196,6 +196,7 @@ function _user_relationships_ui_autocomplete_types($string = '') {
  *                       add, remove, requested, received
  */
 function _user_relationships_ui_actions_between(&$viewer, &$viewed, $action_types = array('add' => 1, 'remove' => 1, 'requested' => 1, 'received' => 1)) {
+ 
   if (!user_access('can have relationships') || $viewer->uid == $viewed->uid) {
     return;
   }
@@ -233,13 +234,11 @@ function _user_relationships_ui_actions_between(&$viewer, &$viewed, $action_type
     foreach ($existing_relationships as $rtid => $relationship_type) {
       foreach ($relationship_type as $relationship) {
         if (!$relationship->is_oneway || !$relationship->is_reciprocal || $relationship->requester_id == $viewer->uid) {
-          unset($all_relationships[$rtid]);
-          $relationships_count++;
+          unset($existing_relationships[$relationship->rid]);
         }
       }
     }
-  
-    if (!$relationships_count || (variable_get('user_relationships_allow_multiple', TRUE) && ($relationships_count < $types_count))) {
+    if (!count($user_relationships) || ((variable_get('user_relationships_allow_multiple', TRUE) && ($relationships_count < $types_count)))) {
       //if configured, create direct links
       if (variable_get('user_relationships_show_direct_links', 1)) {
         //draw a single link, or one for each relationship type
@@ -261,7 +260,7 @@ function _user_relationships_ui_actions_between(&$viewer, &$viewed, $action_type
   if (isset($action_types['remove'])) {
     $relationships = user_relationships_load(array('between' => array($viewer->uid, $viewed->uid)));
     foreach ($relationships as $relationship) {
-      if ($relationship->approved && !isset($list[$relationship->rid])) {
+      if ($relationship->approved && !isset($list[$relationship->rid]) && !($relationship->is_oneway && $relationship->requester_id != $viewer->uid)) {
         $list[$relationship->rid] = t('%relationship_name (!remove_link)', array(
           '%relationship_name'  => ur_tt("user_relationships:rtid:$relationship->rtid:name", $relationship->name) . ($relationship->is_oneway ? ($relationship->requester_id == $viewer->uid ? t(' (You to Them)') : t(' (Them to You)')) : NULL),
           '!remove_link'        => theme('user_relationships_remove_link', $viewer->uid, $relationship->rid)
@@ -321,8 +320,8 @@ function _user_relationships_ui_get_requestable_rtypes($requester, $requestee) {
     if (is_array($relationship) && count($relationship)) {
       $relationship = $relationship[0];
     }
-    //skip two-way relationships, one-way non-reciprocal relationships, or reciprocal where this direction already exists
-    if (isset($current_relationships[$rtype->rtid]) && (!$rtype->is_oneway || !$rtype->is_reciprocal || $relationship->requester_id == $requester->uid)) {
+    //Skip two-way relationships, one-way non-reciprocal relationships, or reciprocal where this direction already exists
+    if (isset($current_relationships[$rtype->rtid]) && ((!$rtype->is_oneway || !$rtype->is_reciprocal) && $relationship->requester_id == $requester->uid)) {
       continue;
     }
     //exclude types that are not allowed
@@ -544,13 +543,13 @@ function user_relationships_ui_menu() {
     );
 
 
-  $items['relationship/%user/request'] = array(
+  $items['relationship/%user/request/%user_relationships_type'] = array(
     'title'             => 'Create a relationship',
     'type'              => MENU_CALLBACK,
     'access callback'   =>  'user_relationships_ui_check_access',
     'access arguments'  => array('edit'),
     'page callback'     => 'user_relationships_ui_request_ajax',
-    'page arguments'    => array(1),
+    'page arguments'    => array(1, 3),
     'file'              => 'user_relationships_ui.forms.inc',
   );
 
