diff --git a/weblinks.module b/weblinks.module
index 13fb466..2bf5144 100644
--- a/weblinks.module
+++ b/weblinks.module
@@ -143,19 +143,19 @@ function term_get_children_ids($tid) {
 }
 
 /**
- * Retrieve taxonomy node count by Term ID as by taxonomy_term_count_nodes.
+ * Retrieve taxonomy node count by Term ID.
  *
- * @param tid
+ * @param int $tid
  *   Term ID
- * @param type
- *   Node type
- * @param child_count
+ * @param bool $child_count
  *   TRUE - Also count all nodes in child terms (if they exists) - Default
  *   FALSE - Count only nodes related to Term ID
+ *
+ * @return int $count
+ *   The number of weblinks tagged with that term.
  */
-function weblinks_term_node_count($tid, $type = '', $child_count = TRUE) {
+function weblinks_term_node_count($tid, $child_count = TRUE) {
   $tids = array($tid);
-
   if ($child_count) {
     $tids = array_merge($tids, term_get_children_ids($tid));
   }
@@ -164,13 +164,12 @@ function weblinks_term_node_count($tid, $type = '', $child_count = TRUE) {
   $langs = array($language->language);
   $langs[] = 'und';
 
-  $query = db_select('taxonomy_index', 't');
-  $query->condition('tid', $tids, 'IN');
-  $query->join('node', 'n', 't.nid = n.nid');
-  $query->condition('n.status', 1, '=');
-  if ($type <> '') {
-    $query->condition('n.type', $type, '=');
-  }
+  $query = db_select('field_data_taxonomy_weblinks', 't');
+  $query->condition('taxonomy_weblinks_tid', $tids, 'IN');
+  $query->join('node', 'n', 't.entity_id = n.nid');
+  $query->condition('n.status', 1);
+  $query->condition('n.type', 'weblinks');
+  // Use 'language' from the node table not field_data_taxonomy_weblinks.
   $query->condition('n.language', $langs, 'IN');
 
   $count = $query->countQuery()->execute()->fetchField();
@@ -1193,7 +1192,7 @@ function weblinks_get_tree($parent = 0, $quick = FALSE, $ismainlinkspage = TRUE)
       $term->node_count = $unpub_count;
     }
     else {
-      $term->node_count = weblinks_term_node_count($tid, 'weblinks', TRUE);
+      $term->node_count = weblinks_term_node_count($tid, TRUE);
     }
     // Skip if we are suppressing empty groups and there are no links here.
     if ($skip_empty && $term->node_count == 0) {
@@ -1551,19 +1550,17 @@ function _weblinks_get_query($tid = 0, $sort = 'title', $limit = 0) {
     $query->condition('n.status', 1);
   }
 
-  // Join on taxonomy_index to filter for specific term(s) if required.
-  // The taxonomy_index table is not maintained for unpublished links but we do
-  // not group/select them by term anyway.
+  // Join on field_data_taxonomy_weblinks to filter for specific term(s).
   if (_weblinks_get_vocid() && $tid !== 'all' && $tid !== 'unpublished' && $sort != 'user') {
     if ($tid === 0) {
-      // Get the unclassified links, those with no row in taxonomy_index.
-      $query->addJoin('LEFT', 'taxonomy_index', 'tn', 'tn.nid = n.nid');
-      $query->isNull('tn.nid');
+      // Select just the unclassified links - those with no matching row.
+      $query->addJoin('LEFT', 'field_data_taxonomy_weblinks', 't', 't.entity_id = n.nid');
+      $query->isNull('t.entity_id');
     }
     else {
-      // Get the rows in taxonomy_index matching on term id(s).
-      $query->addJoin('INNER', 'taxonomy_index', 'tn', 'tn.nid = n.nid');
-      $query->where('tn.tid IN (:tid)', array(':tid' => $tid));
+      // Select the rows that match on the required term id(s).
+      $query->addJoin('INNER', 'field_data_taxonomy_weblinks', 't', 't.entity_id = n.nid');
+      $query->where('t.taxonomy_weblinks_tid IN (:tid)', array(':tid' => $tid));
     }
   }
 
diff --git a/weblinks.user.inc b/weblinks.user.inc
index 2ecefc1..94e1fa4 100644
--- a/weblinks.user.inc
+++ b/weblinks.user.inc
@@ -38,8 +38,6 @@ function _weblinks_user_access_check($user, $account) {
 function weblinks_user_form($form, &$form_state, $account) {
   global $user;
   $vocid = _weblinks_get_vocid();
-  // If $vocid is not empty, we know that the taxonomy module is available.
-  $taxo = !empty($vocid);
   $unclassed = _weblinks_unclassed();
   $destination = drupal_get_destination();
   $options = array();
@@ -47,12 +45,13 @@ function weblinks_user_form($form, &$form_state, $account) {
   $limit = 20;
   $node_ops = module_invoke_all('node_operations');
 
+  // Get all Web Links owned by this user.
   $query = db_select('node', 'n');
   $query->extend('PagerDefault')
     ->limit($limit);
   $query->condition('n.uid', $account->uid, '=')
     ->condition('n.type', 'weblinks', '=')
-    ->fields('n')
+    ->fields('n', array('nid', 'title', 'status', 'changed', 'promote', 'sticky'))
     ->orderBy('n.changed', 'DESC');
   $query_result = $query->execute();
 
@@ -62,12 +61,9 @@ function weblinks_user_form($form, &$form_state, $account) {
     if ($node->promote) {
       $status[] = t('promoted');
     }
-    if ($node->sticky > 0) {  // >0 allows for sticky-encoded weighting.
+    if ($node->sticky == 1) {
       $status[] = t('sticky');
     }
-    if (!empty($node->moderate)) {
-      $status[] = t('moderated');
-    }
 
     // We don't want to "mark" our own content.
     if ($account->uid == $user->uid) {
@@ -81,12 +77,19 @@ function weblinks_user_form($form, &$form_state, $account) {
     $form['update'][$node->nid] =  array('#markup' => format_interval($now - $node->changed));
 
     $tid_list = array();
-    if ($taxo) {
-      $terms = db_query("SELECT tn.tid, td.name FROM {taxonomy_index} tn
-                        LEFT JOIN {taxonomy_term_data} td USING (tid) WHERE tn.nid=:nid",
-                        array(':nid' => $node->nid));
-      if ($terms->rowCount() > 0) {
-        foreach ($terms as $row) {
+    // If $vocid is not empty, we know that the taxonomy module is available
+    // and the field tables will exist.
+    if ($vocid) {
+      // Get the term names associated with this node.
+      $query = db_select('field_data_taxonomy_weblinks', 't');
+      $query->fields('t', array('entity_id', 'taxonomy_weblinks_tid'));
+      $query->join('taxonomy_term_data', 'tt', 'tt.tid = t.taxonomy_weblinks_tid');
+      $query->fields('tt', array('name'));
+      $query->condition('entity_id', $node->nid);
+      $result = $query->execute();
+
+      if ($result->rowCount() > 0) {
+        foreach ($result as $row) {
           $tid_list[] = check_plain($row->name);
         }
       }
