diff --git a/src/Entity/TaxonomyMenu.php b/src/Entity/TaxonomyMenu.php
index ef183c2..27b7fdd 100644
--- a/src/Entity/TaxonomyMenu.php
+++ b/src/Entity/TaxonomyMenu.php
@@ -156,13 +156,9 @@ class TaxonomyMenu extends ConfigEntityBase implements TaxonomyMenuInterface {
   }
 
   /**
-   * Generates a menu link id for the taxonomy term.
-   *
-   * @param \Drupal\taxonomy\TermInterface $term
-   *
-   * @return string
+   * {@inheritdoc}
    */
-  protected function buildMenuPluginId(TermInterface $term, $include_base_plugin_id = TRUE) {
+  public function buildMenuPluginId(TermInterface $term, $include_base_plugin_id = TRUE) {
     $plugin_id = '';
     if ($include_base_plugin_id) {
       $plugin_id .= 'taxonomy_menu.menu_link:';
diff --git a/src/Plugin/Menu/TaxonomyMenuMenuLink.php b/src/Plugin/Menu/TaxonomyMenuMenuLink.php
index 3a0e2e5..b31b193 100644
--- a/src/Plugin/Menu/TaxonomyMenuMenuLink.php
+++ b/src/Plugin/Menu/TaxonomyMenuMenuLink.php
@@ -93,16 +93,26 @@ class TaxonomyMenuMenuLink extends MenuLinkBase implements ContainerFactoryPlugi
    * {@inheritdoc}
    */
   public function getTitle() {
-    return $this->entityManager->getStorage('taxonomy_term')->load($this->pluginDefinition['metadata']['taxonomy_term_id'])->label();
+    /** @var $link \Drupal\taxonomy\Entity\Term */
+    $link = $this->entityManager->getStorage('taxonomy_term')
+      ->load($this->pluginDefinition['metadata']['taxonomy_term_id']);
+    if (!empty($link)) {
+      return $link->label();
+    }
+    return NULL;
   }
 
   /**
    * {@inheritdoc}
    */
   public function getDescription() {
-    return $this->entityManager->getStorage('taxonomy_term')
-      ->load($this->pluginDefinition['metadata']['taxonomy_term_id'])
-      ->getDescription();
+    /** @var $link \Drupal\taxonomy\Entity\Term */
+    $link = $this->entityManager->getStorage('taxonomy_term')
+      ->load($this->pluginDefinition['metadata']['taxonomy_term_id']);
+    if (!empty($link)) {
+      return $link->getDescription();
+    }
+    return NULL;
   }
 
   /**
diff --git a/src/TaxonomyMenuHelper.php b/src/TaxonomyMenuHelper.php
index 133889c..2cb7e7b 100644
--- a/src/TaxonomyMenuHelper.php
+++ b/src/TaxonomyMenuHelper.php
@@ -106,16 +106,17 @@ class TaxonomyMenuHelper {
   public function removeTaxonomyMenuEntries(TermInterface $term, $rebuild_all = TRUE) {
     // Load relevant taxonomy menus.
     $tax_menus = $this->getTermMenusByVocabulary($term->getVocabularyId());
+    /** @var $menu \Drupal\taxonomy_menu\TaxonomyMenuInterface */
     foreach ($tax_menus as $menu) {
-      foreach (array_keys($menu->getLinks([], TRUE)) as $plugin_id) {
-        if (!$rebuild_all) {
-          $plugin_id_parts = explode('.', $plugin_id);
-          $term_id = array_pop($plugin_id_parts);
-          if ($term->id() != $term_id) {
-            continue;
-          }
+      // Remove all links.
+      if ($rebuild_all) {
+        $links = array_keys($menu->getLinks([], TRUE));
+        foreach ($links as $plugin_id) {
+          $this->manager->removeDefinition($plugin_id, FALSE);
         }
-        $this->manager->removeDefinition($plugin_id, FALSE);
+      // Remove specific term link. Note - this link does not exist in the taxonomy menu and is not in $links.
+      } else if (!empty($term)) {
+        $this->manager->removeDefinition($menu->buildMenuPluginId($term), FALSE);
       }
     }
   }
diff --git a/src/TaxonomyMenuInterface.php b/src/TaxonomyMenuInterface.php
index 0e21f05..1ce845c 100644
--- a/src/TaxonomyMenuInterface.php
+++ b/src/TaxonomyMenuInterface.php
@@ -8,6 +8,7 @@
 namespace Drupal\taxonomy_menu;
 
 use Drupal\Core\Config\Entity\ConfigEntityInterface;
+use Drupal\taxonomy\TermInterface;
 
 /**
  * Provides an interface defining a TaxonomyMenu entity.
@@ -39,4 +40,13 @@ interface TaxonomyMenuInterface extends ConfigEntityInterface {
    */
   public function getLinks($base_plugin_definition = [], $include_base_plugin_id = FALSE);
 
+  /**
+   * Generates a menu link id for the taxonomy term.
+   *
+   * @param \Drupal\taxonomy\TermInterface $term
+   *
+   * @return string
+   */
+  public function buildMenuPluginId(TermInterface $term, $include_base_plugin_id = TRUE);
+
 }
