diff --git a/entityconnect.module b/entityconnect.module
index 7ae9099..bcfbbc8 100644
--- a/entityconnect.module
+++ b/entityconnect.module
@@ -123,12 +123,19 @@ function entityconnect_field_attach_form($entity_type, $entity, &$form, &$form_s
  * Implements hook_theme().
  */
 function entityconnect_theme() {
-  return array(
-    'entityconnect_taxonomy_term_add_list' => array(
+  $items = array();
+
+  $items['entityconnect_taxonomy_term_add_list'] = array(
       'arguments' => array('items' => NULL),
       'file' => 'includes/entityconnect.pages.inc',
-    ),
   );
+
+  $items['entityconnect_entity_add_list'] = array(
+    'arguments' => array('items' => NULL, 'cache id' => NULL),
+    'file' => 'includes/entityconnect.pages.inc',
+  );
+
+  return $items;
 }
 
 /**
diff --git a/includes/entityconnect.form.inc b/includes/entityconnect.form.inc
index ab2ee05..9cf004a 100644
--- a/includes/entityconnect.form.inc
+++ b/includes/entityconnect.form.inc
@@ -170,7 +170,21 @@ function entityconnect_add_edit_button_submit(&$form, &$form_state) {
 
   if ($field_info['module'] == 'entityreference') {
     if ($key_exists) {
-      $target_id = (isset($field_container['target_id'])) ? $field_container['target_id'] : array_pop($field_container);
+      $target_id = (isset($field_container['target_id'])) ? $field_container['target_id'] : '';
+      if ($target_id == '' && is_array($field_container)) {
+        foreach ($field_container as $key => $value) {
+          if (is_array($value)) {
+            foreach ($value as $key2 => $value2) {
+              if (!is_null($value2)) {
+                $target_id[$key2] = $value2;
+              }
+            }
+          }
+          else {
+            $target_id = $value;
+          }
+        }
+      }
     }
 
     // TODO : Find the original problem of the entity connect use with
@@ -184,7 +198,21 @@ function entityconnect_add_edit_button_submit(&$form, &$form_state) {
   }
   elseif ($field_info['module'] == 'node_reference') {
     if ($key_exists) {
-      $target_id = (isset($field_container['nid'])) ? $field_container['nid'] : array_pop($field_container);
+      $target_id = (isset($field_container['nid'])) ? $field_container['nid'] : '';
+      if ($target_id == '' && is_array($field_container)) {
+        foreach ($field_container as $key => $value) {
+          if (is_array($value)) {
+            foreach ($value as $key2 => $value2) {
+              if (!is_null($value2)) {
+                $target_id[$key2] = $value2;
+              }
+            }
+          }
+          else {
+            $target_id = $value;
+          }
+        }
+      }
     }
 
     // TODO : Find the original problem of the entity connect use with
@@ -198,7 +226,21 @@ function entityconnect_add_edit_button_submit(&$form, &$form_state) {
   }
   elseif ($field_info['module'] == 'user_reference') {
     if ($key_exists) {
-      $target_id = (isset($field_container['uid'])) ? $field_container['uid'] : array_pop($field_container);
+      $target_id = (isset($field_container['uid'])) ? $field_container['uid'] : '';
+      if ($target_id == '' && is_array($field_container)) {
+        foreach ($field_container as $key => $value) {
+          if (is_array($value)) {
+            foreach ($value as $key2 => $value2) {
+              if (!is_null($value2)) {
+                $target_id[$key2] = $value2;
+              }
+            }
+          }
+          else {
+            $target_id = $value;
+          }
+        }
+      }
     }
 
     // TODO : Find the original problem of the entity connect use with
diff --git a/includes/entityconnect.menu.inc b/includes/entityconnect.menu.inc
index 2b9e49c..c8c3c82 100644
--- a/includes/entityconnect.menu.inc
+++ b/includes/entityconnect.menu.inc
@@ -95,9 +95,9 @@ function entityconnect_add($cache_id) {
         foreach (taxonomy_get_vocabularies() as $key => $item) {
           (!isset($item->href)) ? $item->href = NULL : $item->href;
           $type = $item->machine_name;
-            $item->href = "admin/structure/taxonomy/$type/add/$cache_id";
-            $content[$key] = $item;
-            $voc_list[] = l($item->name, $item->href);
+          $item->href = "admin/structure/taxonomy/$type/add/$cache_id";
+          $content[$key] = $item;
+          $voc_list[] = l($item->name, $item->href);
         }// foreach()
       }// else()
       $output = theme('entityconnect_taxonomy_term_add_list', array('items' => $content));
@@ -123,30 +123,97 @@ function entityconnect_add($cache_id) {
 function entityconnect_edit($cache_id) {
   $cache = cache_get($cache_id);
   $entity_type = $cache->data['target_entity_type'];
+  $target_id = $cache->data['target_id'];
+  $output = '';
 
   switch ($entity_type) {
     case 'node':
-      drupal_goto("node/" . $cache->data['target_id'] . "/edit", array(
-          'query' => array("build_cache_id" => $cache_id, "child" => TRUE)));
+      if (is_array($target_id)) {
+        $info = entity_load($entity_type, $target_id);
+        foreach ($info as $key => $value) {
+          $content[$key] = array (
+            'label' => $value->title,
+            'href' => 'node/' . $value->nid . '/edit',
+          );
+        }
+        $output = theme('entityconnect_entity_add_list', array(
+          'items' => $content,
+          'cache id' => $cache_id)
+        );
+        $output .= l(t('Cancel'), "admin/entityconnect/return/$cache_id");
+      }
+      else {
+        drupal_goto("node/" . $cache->data['target_id'] . "/edit", array(
+            'query' => array("build_cache_id" => $cache_id, "child" => TRUE)));
+      }
       break;
 
     case 'user':
-      drupal_goto("user/" . $cache->data['target_id'] . "/edit", array(
-          'query' => array("build_cache_id" => $cache_id, "child" => TRUE)));
+      if (is_array($target_id)) {
+        $info = entity_load($entity_type, $target_id);
+        foreach ($info as $key => $value) {
+          $content[$key] = array (
+            'label' => $value->name,
+            'href' => 'user/' . $value->uid . '/edit',
+          );
+        }
+        $output = theme('entityconnect_entity_add_list', array(
+          'items' => $content,
+          'cache id' => $cache_id)
+        );
+        $output .= l(t('Cancel'), "admin/entityconnect/return/$cache_id");
+      }
+      else {
+        drupal_goto("user/" . $cache->data['target_id'] . "/edit", array(
+            'query' => array("build_cache_id" => $cache_id, "child" => TRUE)));
+      }
       break;
 
     case 'taxonomy_term':
-      drupal_goto("taxonomy/term/" . $cache->data['target_id'] . "/edit", array(
-          'query' => array("build_cache_id" => $cache_id, "child" => TRUE)));
-
+      if (is_array($target_id)) {
+        $info = entity_load($entity_type, $target_id);
+        foreach ($info as $key => $value) {
+          $content[$key] = array (
+            'label' => $value->name,
+            'href' => 'taxonomy/term/' . $value->tid . '/edit',
+          );
+        }
+        $output = theme('entityconnect_entity_add_list', array(
+          'items' => $content,
+          'cache id' => $cache_id)
+        );
+        $output .= l(t('Cancel'), "admin/entityconnect/return/$cache_id");
+      }
+      else {
+        drupal_goto("taxonomy/term/" . $cache->data['target_id'] . "/edit", array(
+            'query' => array("build_cache_id" => $cache_id, "child" => TRUE)));
+      }
       break;
 
     case 'taxonomy_vocabulary':
-      drupal_goto("admin/structure/taxonomy/" . $cache->data['target_id'] . "/edit", array(
-          'query' => array("build_cache_id" => $cache_id, "child" => TRUE)));
-      break;
+      if (is_array($target_id)) {
+        $info = entity_load($entity_type, $target_id);
+        foreach ($info as $key => $value) {
+          $content[$key] = array (
+            'label' => $value->name,
+            'href' => 'admin/structure/taxonomy/' . $value->name . '/edit',
+          );
+        }
+        $output = theme('entityconnect_entity_add_list', array(
+          'items' => $content,
+          'cache id' => $cache_id)
+        );
+        $output .= l(t('Cancel'), "admin/entityconnect/return/$cache_id");
+      }
+      else {
+        $info = entity_load_single($entity_type, $target_id);
+        drupal_goto("admin/structure/taxonomy/" . $info->name . "/edit", array(
+            'query' => array("build_cache_id" => $cache_id, "child" => TRUE)));
+      }
+        break;
 
     default:
       break;
   }// switch()
+  return $output;
 }
diff --git a/includes/entityconnect.pages.inc b/includes/entityconnect.pages.inc
index 691f16b..07cfef1 100644
--- a/includes/entityconnect.pages.inc
+++ b/includes/entityconnect.pages.inc
@@ -31,3 +31,33 @@ function theme_entityconnect_taxonomy_term_add_list($variables) {
   }
   return $output;
 }
+
+/**
+ * Returns HTML for a list of available taxonomy vocabularies for term creation.
+ *
+ * @param array $variables
+ *   An associative array containing:
+ *   - content: An array of content types.
+ *
+ * @ingroup themeable
+ */
+function theme_entityconnect_entity_add_list($variables) {
+  $output = '';
+  $entities = $variables['items'];
+  $cache_id = $variables['cache id'];
+  $output = '';
+
+  if ($entities) {
+    $output = '<ul class="admin-list">';
+    foreach ($entities as $item) {
+      $output .= '<li class="clearfix"><span class="label">' . l($item['label'], $item['href'], array(
+          'query' => array("build_cache_id" => $cache_id, "child" => TRUE))) . '</span>';
+      $output .= '<div class="description"></div></li>';
+    }
+    $output .= '</ul>';
+  }
+  else {
+    $output = '<p>' . t('You have not selected any entities.') .'</p>';
+  }
+  return $output;
+}
diff --git a/theme/js/entityconnect.js b/theme/js/entityconnect.js
index 2fe3d99..a36c9ae 100644
--- a/theme/js/entityconnect.js
+++ b/theme/js/entityconnect.js
@@ -48,6 +48,7 @@
 
         text = $(wrapper).siblings("[type='text']");
         radio = $(wrapper).siblings("[type='radio']");
+        checkbox = $(wrapper).siblings("[type='checkbox']");
         select = $(wrapper).siblings("select");
 
         if(text.length == 0) {
@@ -56,12 +57,17 @@
         if(radio.length == 0) {
           radio = $(wrapper).siblings().find("[type='radio']");
         }
+        if(checkbox.length == 0) {
+          checkbox = $(wrapper).siblings().find("[type='checkbox']");
+        }
         if(select.length == 0) {
-          select = $(wrapper).siblings().find("select > option");
+          select = $(wrapper).siblings().find("select > option:selected");
         }
 
-        if($.trim($(text).val()) == '' && $.trim($(radio).val()) == ''
-             && $.trim($(select).val()) == '') {
+        if($.trim($(text).val()) == ''
+            && $.trim($(radio).val()) == ''
+            && $.trim($(select).val()) == ''
+            && $.trim($(checkbox).val()) == '') {
           return false;
         }
         return true;
