diff --git a/Trigger/TrigEvent/TrigNavTools/TrigNavTools/TrigNavigationSlimmingTool.h b/Trigger/TrigEvent/TrigNavTools/TrigNavTools/TrigNavigationSlimmingTool.h
index 99e63909be431e1be6534054c5eabefe016ee0fc..670f81e8da88ba25813d2b7c961e6fa5edd2310c 100644
--- a/Trigger/TrigEvent/TrigNavTools/TrigNavTools/TrigNavigationSlimmingTool.h
+++ b/Trigger/TrigEvent/TrigNavTools/TrigNavTools/TrigNavigationSlimmingTool.h
@@ -71,9 +71,6 @@ namespace HLT {
 	 StatusCode doSlimming( std::vector<uint32_t>& slimmed_and_serialized ) const;
 
 
-         std::map<std::string, int>* getFeatureOccurrences(HLT::NavigationCore* navigation);
-
-	 	 
    private:
 	 ToolHandle<Trig::TrigDecisionTool> m_trigDecisionTool;
 	 
@@ -251,12 +248,6 @@ namespace HLT {
          bool toBeIncluded(State& state, TriggerElement *te, std::vector<TriggerElement*> *inclusionList, 
              std::vector<TriggerElement*> *exclusionList);
 
-         /**
-          * @brief Returns the label for the given feature
-          */
-         std::string getLabel(const HLT::NavigationCore& navigation,
-                              const TriggerElement::FeatureAccessHelper &fah) const;
-
          /**
           * @brief Propagates the features on given TE to its children
           */
diff --git a/Trigger/TrigEvent/TrigNavTools/TrigNavTools/getFeatureOccurrences.h b/Trigger/TrigEvent/TrigNavTools/TrigNavTools/getFeatureOccurrences.h
new file mode 100644
index 0000000000000000000000000000000000000000..fe6419ea616a8320367f291b5fda2ca87b7e71a5
--- /dev/null
+++ b/Trigger/TrigEvent/TrigNavTools/TrigNavTools/getFeatureOccurrences.h
@@ -0,0 +1,41 @@
+// This file's extension implies that it's C, but it's really -*- C++ -*-.
+/*
+ * Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration.
+ */
+/**
+ * @file TrigNavTools/getFeatureOccurrences.h
+ * @author scott snyder <snyder@bnl.gov>
+ * @date May, 2020
+ * @brief Return number of occurrences of each feature.
+ *
+ * Broken out from the old TrigNavigationSlimmingTool (B. Smith / T. Bold).
+ */
+
+
+#ifndef TRIGNAVTOOLS_GETFEATUREOCCURRENCES_H
+#define TRIGNAVTOOLS_GETFEATUREOCCURRENCES_H
+
+
+#include <map>
+#include <string>
+
+
+namespace HLT {
+
+
+class NavigationCore;
+
+
+namespace TrigNavTools {
+
+
+/// Return number of occurrences of each feature.
+std::map<std::string, int>
+getFeatureOccurrences (const HLT::NavigationCore* navigation);
+
+
+
+}} // namespace HLT::TrigNavTools
+
+
+#endif // not TRIGNAVTOOLS_GETFEATUREOCCURRENCES_H
diff --git a/Trigger/TrigEvent/TrigNavTools/src/TrigNavigationSlimmingTool.cxx b/Trigger/TrigEvent/TrigNavTools/src/TrigNavigationSlimmingTool.cxx
index 2de74db35c49e6be597eacd581f4b3b2b3f9c83b..fa5025c3437fa6265d8fb1095e7cfceeb7b39ef9 100644
--- a/Trigger/TrigEvent/TrigNavTools/src/TrigNavigationSlimmingTool.cxx
+++ b/Trigger/TrigEvent/TrigNavTools/src/TrigNavigationSlimmingTool.cxx
@@ -14,12 +14,15 @@
 //#include "TrigNavigation/TriggerElementFactory.h"
 #include "TrigNavigation/Holder.h"
 #include "GaudiKernel/ThreadLocalContext.h"
+#include "getLabel.h"
 
 
 #include "TrigNavTools/TrigNavigationSlimmingTool.h"
 
 #include <iostream>
 
+using HLT::TrigNavTools::SlimmingHelper;
+
 /**********************************************************************
  *
  * Constructors and destructors
@@ -320,40 +323,6 @@ StatusCode HLT::TrigNavigationSlimmingTool::finalize() {
 
 
 
-std::map<std::string, int> *HLT::TrigNavigationSlimmingTool::getFeatureOccurrences(HLT::NavigationCore* navigation) {
-  if(!navigation)
-    return 0;
-  
-  if (navigation->getInitialNode() == 0 )
-    return 0;
-  
-  std::map<std::string, int> *featureOccurrences = new std::map<std::string, int>;
-
-
-  for ( auto te : navigation->getAllTEs() ) {
-    for ( const auto& fea: te->getFeatureAccessHelpers() ) {
-      (*featureOccurrences)[getLabel(*navigation, fea)] += 1;
-    }
-  }
-
-  return featureOccurrences;
-}
-
-std::string HLT::TrigNavigationSlimmingTool::getLabel(const HLT::NavigationCore& navigation,
-                                                      const TriggerElement::FeatureAccessHelper &fah) const {
-
-  CLID clid = fah.getCLID();
-  std::string label;
-  HLTNavDetails::IHolder *h = navigation.getHolder(clid, fah.getIndex().subTypeIndex());
-  if(h) label = h->label();
-
-  return label;
-}
-
-
-
-
-
 StatusCode
 HLT::TrigNavigationSlimmingTool::lateFillConfiguration(State& state) const {
   // remember the configured chain names, as they will be useful later  
@@ -534,11 +503,11 @@ bool HLT::TrigNavigationSlimmingTool::toBeIncluded(State& state,
 	  te->getFeatureAccessHelpers().begin();
         iter != te->getFeatureAccessHelpers().end(); ++iter) {
       // grab the label and check if it was found in the inclusion list
-      if(std::find(inclusionList->begin(), inclusionList->end(), this->getLabel(state.navigation, *iter )) != inclusionList->end())
+      if(std::find(inclusionList->begin(), inclusionList->end(), SlimmingHelper::getLabel(state.navigation, *iter )) != inclusionList->end())
         return true;
       // now find if its in the exclusion list
       if(exclusionList && std::find(exclusionList->begin(), exclusionList->end(), 
-				    this->getLabel( state.navigation, *iter )) != exclusionList->end())
+				    SlimmingHelper::getLabel( state.navigation, *iter )) != exclusionList->end())
         onExclusionList = 1;
     }
 
@@ -562,7 +531,7 @@ bool HLT::TrigNavigationSlimmingTool::toBeIncluded(State& state,
 	te->getFeatureAccessHelpers().begin();
       iter != te->getFeatureAccessHelpers().end(); ++iter) {
     // grab the label and check if it was found in the exclusion list
-    if(std::find(exclusionList->begin(), exclusionList->end(), this->getLabel(state.navigation, *iter )) != exclusionList->end())
+    if(std::find(exclusionList->begin(), exclusionList->end(), SlimmingHelper::getLabel(state.navigation, *iter )) != exclusionList->end())
       return false;
   }
 
diff --git a/Trigger/TrigEvent/TrigNavTools/src/getFeatureOccurrences.cxx b/Trigger/TrigEvent/TrigNavTools/src/getFeatureOccurrences.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..5b09dc5273d2cb40c266c5c9d07d3dd712c76fef
--- /dev/null
+++ b/Trigger/TrigEvent/TrigNavTools/src/getFeatureOccurrences.cxx
@@ -0,0 +1,39 @@
+/**
+ * @file TrigNavTools/src/getFeatureOccurrences.h
+ * @author scott snyder <snyder@bnl.gov>
+ * @date May, 2020
+ * @brief Return number of occurrences of each feature.
+ *
+ * Broken out from the old TrigNavigationSlimmingTool (B. Smith / T. Bold).
+ */
+
+
+#include "TrigNavTools/getFeatureOccurrences.h"
+#include "TrigNavigation/Navigation.h"
+#include "getLabel.h"
+
+
+namespace HLT {
+namespace TrigNavTools {
+
+
+/// Return number of occurrences of each feature.
+std::map<std::string, int>
+getFeatureOccurrences (const HLT::NavigationCore* navigation)
+{
+  std::map<std::string, int> featureOccurrences;
+
+  if (navigation && navigation->getInitialNode()) {
+  
+    for ( auto te : navigation->getAllTEs() ) {
+      for ( const auto& fea: te->getFeatureAccessHelpers() ) {
+        featureOccurrences[SlimmingHelper::getLabel(*navigation, fea)] += 1;
+      }
+    }
+  }
+
+  return featureOccurrences;
+}
+
+
+}} // namespace HLT::TrigNavTools
diff --git a/Trigger/TrigEvent/TrigNavTools/src/getLabel.cxx b/Trigger/TrigEvent/TrigNavTools/src/getLabel.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..11480ae3c9523bcf3307433868a9e56a02b93934
--- /dev/null
+++ b/Trigger/TrigEvent/TrigNavTools/src/getLabel.cxx
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration.
+ */
+/**
+ * @file TrigNavTools/src/getLabel.cxx
+ * @author scott snyder <snyder@bnl.gov>
+ * @date May, 2020
+ * @brief Helper function to get a label for a feature.
+ *
+ * Broken out from the old TrigNavigationSlimmingTool (B. Smith / T. Bold).
+ */
+
+
+#include "getLabel.h"
+#include "TrigNavigation/Navigation.h"
+
+
+namespace HLT {
+namespace TrigNavTools {
+
+
+std::string
+SlimmingHelper::getLabel(const HLT::NavigationCore& navigation,
+                         const HLT::TriggerElement::FeatureAccessHelper& fah)
+{
+  CLID clid = fah.getCLID();
+  std::string label;
+  HLTNavDetails::IHolder *h = navigation.getHolder(clid, fah.getIndex().subTypeIndex());
+  if(h) label = h->label();
+    
+  return label;
+}
+
+
+}} // namespace HLT::TrigNavTools
diff --git a/Trigger/TrigEvent/TrigNavTools/src/getLabel.h b/Trigger/TrigEvent/TrigNavTools/src/getLabel.h
new file mode 100644
index 0000000000000000000000000000000000000000..18424dca4ef7bf1cd4ef72fc1a1cde096cd110de
--- /dev/null
+++ b/Trigger/TrigEvent/TrigNavTools/src/getLabel.h
@@ -0,0 +1,44 @@
+// This file's extension implies that it's C, but it's really -*- C++ -*-.
+/*
+ * Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration.
+ */
+/**
+ * @file TrigNavTools/src/getLabel.h
+ * @author scott snyder <snyder@bnl.gov>
+ * @date May, 2020
+ * @brief Helper function to get a label for a feature.
+ *
+ * Broken out from the old TrigNavigationSlimmingTool (B. Smith / T. Bold).
+ */
+
+
+#ifndef TRIGNAVTOOLS_GETLABEL_H
+#define TRIGNAVTOOLS_GETLABEL_H
+
+
+#include "TrigNavigation/TriggerElement.h"
+#include <string>
+
+
+namespace HLT {
+
+
+class NavigationCore;
+
+
+namespace TrigNavTools {
+
+
+// Wrapped in a class so we can more easily declare it a friend
+// in NavigationCore.
+struct SlimmingHelper {
+  static
+  std::string getLabel (const HLT::NavigationCore& navigation,
+                        const HLT::TriggerElement::FeatureAccessHelper& fah);
+};
+
+
+}} // namespace HLT::TrigNavTools
+
+
+#endif // not TRIGNAVTOOLS_GETLABEL_H
diff --git a/Trigger/TrigEvent/TrigNavigation/TrigNavigation/NavigationCore.h b/Trigger/TrigEvent/TrigNavigation/TrigNavigation/NavigationCore.h
index 1d14bac24595571b3bb9eb4e23f1a56655c7ed9e..be488a5f8c915d6078d9fb8a374c402b1db33551 100644
--- a/Trigger/TrigEvent/TrigNavigation/TrigNavigation/NavigationCore.h
+++ b/Trigger/TrigEvent/TrigNavigation/TrigNavigation/NavigationCore.h
@@ -1,7 +1,7 @@
 // Emacs -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 
@@ -43,6 +43,9 @@ class TrigBStoxAODTool;
 
 namespace HLT {
   class TrigNavigationSlimmingTool;
+  namespace TrigNavTools {
+    struct SlimmingHelper;
+  }
   /**
    * @brief The NavigationCore class, adds on top of the TrigNavStructure the EDM read-only handling
    *
@@ -95,6 +98,7 @@ namespace HLT {
 
   class NavigationCore : public HLT::TrigNavStructure {
     friend class HLT::TrigNavigationSlimmingTool;
+    friend struct HLT::TrigNavTools::SlimmingHelper;
     friend class HLTNavDetails::TypeMapDeleter;
     friend class ::TrigBStoxAODTool;
   public:
diff --git a/Trigger/TrigValidation/TrigValAlgs/TrigValAlgs/TrigSlimValAlg.h b/Trigger/TrigValidation/TrigValAlgs/TrigValAlgs/TrigSlimValAlg.h
index 5bb42c02b8f8d99b0ef84dab172b36ef3c93bda6..32504f99fe77adbe3fb3564f5b93e790bcb61f22 100644
--- a/Trigger/TrigValidation/TrigValAlgs/TrigValAlgs/TrigSlimValAlg.h
+++ b/Trigger/TrigValidation/TrigValAlgs/TrigValAlgs/TrigSlimValAlg.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef CLASS_TRIG_SLIM_VALIDATION_H
@@ -10,7 +10,6 @@
 
 #include "TrigDecisionTool/TrigDecisionTool.h"
 #include "TrigNavigation/TriggerElement.h"
-#include "TrigNavTools/TrigNavigationSlimmingTool.h"
 #include "AthenaBaseComps/AthAlgorithm.h"
 #include <iostream>
 
@@ -250,7 +249,6 @@ class TrigSlimValAlg : public AthAlgorithm {
 
     // tools
     ToolHandle<Trig::TrigDecisionTool> m_trigDecisionTool; //<! TrigDecisionTool
-    ToolHandle<HLT::TrigNavigationSlimmingTool> m_slimmingTool; //<! Navigation Slimming Tool
     
     // internal data
     std::vector<std::string> m_configuredGroups; //<! cache group->chain map
diff --git a/Trigger/TrigValidation/TrigValAlgs/src/TrigSlimValAlg.cxx b/Trigger/TrigValidation/TrigValAlgs/src/TrigSlimValAlg.cxx
index b796edf2defc6961a07936c657fb775f15397205..cbe8ad4dedee8b0b7cd142e3fddd7270b6d400c7 100644
--- a/Trigger/TrigValidation/TrigValAlgs/src/TrigSlimValAlg.cxx
+++ b/Trigger/TrigValidation/TrigValAlgs/src/TrigSlimValAlg.cxx
@@ -1,20 +1,19 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "TrigNavigation/Navigation.h"
 
 #include "TrigValAlgs/TrigSlimValAlg.h"
+#include "TrigNavTools/getFeatureOccurrences.h"
 
 TrigSlimValAlg::TrigSlimValAlg(const std::string& name, ISvcLocator *pSvcLocator) :
   AthAlgorithm(name, pSvcLocator),
   m_trigDecisionTool("Trig::TrigDecisionTool/TrigDecisionTool"),
-  m_slimmingTool("HLT::TrigNavigationSlimmingTool/TrigNavigationSlimmingTool"),
   m_eventSeen(0)
 {
 
   declareProperty("TrigDecisionTool", m_trigDecisionTool);
-  declareProperty("SlimmingTool", m_slimmingTool);
 
 }
 
@@ -29,15 +28,6 @@ StatusCode TrigSlimValAlg::initialize() {
     return StatusCode::FAILURE;
   }
   
-  // load the slimming tool
-  if( !m_slimmingTool.empty() ) {
-    ATH_CHECK( m_slimmingTool.retrieve() );
-  }
-  else {
-    ATH_MSG_ERROR ("Could not retrive the TrigNavigationSlimmingTool as it was not specified!" );
-    return StatusCode::FAILURE;
-  }
-  
   return StatusCode::SUCCESS;
 
 }
@@ -73,7 +63,7 @@ StatusCode TrigSlimValAlg::execute() {
   ATH_MSG_INFO ("REGTEST  " << "======== START of TrigSlimValidation DUMP ========" );
 
   // store some needed information from the navigation structure
-  std::map<std::string, int> *featureOccurrences = m_slimmingTool->getFeatureOccurrences(navigation);
+  std::map<std::string, int> featureOccurrences = HLT::TrigNavTools::getFeatureOccurrences(navigation);
   TrigSlimValAlg::elementSet *allTriggerElements = this->getAllTriggerElements(navigation);
 
   // Print the aggregate navigation structure information
@@ -97,7 +87,7 @@ StatusCode TrigSlimValAlg::execute() {
   ATH_MSG_INFO ("REGTEST  " << "Number of trigger elements: " 
                 << recursiveCount( navigation, numberCounter, sumUpdate ) );
   ATH_MSG_INFO ("REGTEST  " << "Number of distinct features: "
-                << featureOccurrences->size() );
+                << featureOccurrences.size() );
   ATH_MSG_INFO ("REGTEST  " << "Number of intermediate trigger elements: " 
                 << recursiveCount( navigation, intermediateCounter, sumUpdate ) );
   ATH_MSG_INFO ("REGTEST  " << "Number of featureless trigger elements: " 
@@ -136,8 +126,8 @@ StatusCode TrigSlimValAlg::execute() {
 
 
   // print the feature information
-  for(std::map<std::string, int>::const_iterator iter = featureOccurrences->begin();
-      iter != featureOccurrences->end(); ++iter)
+  for(std::map<std::string, int>::const_iterator iter = featureOccurrences.begin();
+      iter != featureOccurrences.end(); ++iter)
     ATH_MSG_INFO ("REGTEST  " << "Occurrences of feature " << (*iter).first
                   << ": " << (*iter).second );
 
@@ -188,7 +178,6 @@ StatusCode TrigSlimValAlg::execute() {
   
   // clean up and finish
   delete allTriggerElements; allTriggerElements = 0;
-  delete featureOccurrences; featureOccurrences = 0;
   
   // print the TrigSlimValidation footer
   ATH_MSG_INFO ("REGTEST  " << "======== END of TrigSlimValidation DUMP ========" );