diff --git a/Utilities/DataHelper/include/DataHelper/Navigation.h b/Utilities/DataHelper/include/DataHelper/Navigation.h
index 87ca762b9de7ad7dc499929dcad740033fea936b..6d641a1c09dda930c44c0dfdd45ea89fb6ab855d 100644
--- a/Utilities/DataHelper/include/DataHelper/Navigation.h
+++ b/Utilities/DataHelper/include/DataHelper/Navigation.h
@@ -5,6 +5,15 @@
 #include "edm4hep/TrackerHitCollection.h"
 #include <map>
 
+#if __has_include("edm4hep/EDM4hepVersion.h")
+#include "edm4hep/EDM4hepVersion.h"
+#else
+// Copy the necessary parts from  the header above to make whatever we need to work here
+#define EDM4HEP_VERSION(major, minor, patch) ((UINT64_C(major) << 32) | (UINT64_C(minor) << 16) | (UINT64_C(patch)))
+// v00-09 is the last version without the capitalization change of the track vector members
+#define EDM4HEP_BUILD_VERSION EDM4HEP_VERSION(0, 9, 0)
+#endif
+
 class Navigation{
  public:
   static Navigation* Instance();
@@ -17,9 +26,15 @@ class Navigation{
   void AddTrackerHitCollection(const edm4hep::TrackerHitCollection* col){m_hitColVec.push_back(col);};
   void AddTrackerAssociationCollection(const edm4hep::MCRecoTrackerAssociationCollection* col){m_assColVec.push_back(col);};
 
+#if EDM4HEP_BUILD_VERSION <= EDM4HEP_VERSION(0, 10, 4)
   edm4hep::TrackerHit GetTrackerHit(const edm4hep::ObjectID& id, bool delete_by_caller=true);
   std::vector<edm4hep::SimTrackerHit> GetRelatedTrackerHit(const edm4hep::ObjectID& id);
+#else
+  edm4hep::TrackerHit GetTrackerHit(const podio::ObjectID& id, bool delete_by_caller=true);
+  std::vector<edm4hep::SimTrackerHit> GetRelatedTrackerHit(const podio::ObjectID& id);
+#endif
   std::vector<edm4hep::SimTrackerHit> GetRelatedTrackerHit(const edm4hep::TrackerHit& hit);
+  std::vector<edm4hep::SimTrackerHit> GetRelatedTrackerHit(const edm4hep::TrackerHit& hit, const edm4hep::MCRecoTrackerAssociationCollection* col);
   
   //static Navigation* m_fNavigation;
  private:
diff --git a/Utilities/DataHelper/src/Navigation.cpp b/Utilities/DataHelper/src/Navigation.cpp
index cc81b7f0e01d514fc0cd158af6034476198560f6..ff86af1f4104a628abd0e91b9992df3c0c504252 100644
--- a/Utilities/DataHelper/src/Navigation.cpp
+++ b/Utilities/DataHelper/src/Navigation.cpp
@@ -25,7 +25,11 @@ void Navigation::Initialize(){
   m_trkHits.clear();
 }
 
+#if EDM4HEP_BUILD_VERSION <= EDM4HEP_VERSION(0, 10, 4)
 edm4hep::TrackerHit Navigation::GetTrackerHit(const edm4hep::ObjectID& obj_id, bool delete_by_caller){
+#else
+edm4hep::TrackerHit Navigation::GetTrackerHit(const podio::ObjectID& obj_id, bool delete_by_caller){
+#endif
   int id = obj_id.collectionID * 10000000 + obj_id.index;
   if(!delete_by_caller){
     if(m_trkHits.find(id)!=m_trkHits.end()) return m_trkHits[id];
@@ -33,7 +37,7 @@ edm4hep::TrackerHit Navigation::GetTrackerHit(const edm4hep::ObjectID& obj_id, b
   /*
   for(int i=0;i<m_assColVec.size();i++){
     for(auto ass : *m_assColVec[i]){
-      edm4hep::ObjectID rec_id = ass.getRec().getObjectID();
+      auto rec_id = ass.getRec().getObjectID();
       if(rec_id.collectionID!=id.collectionID)break;
       else if(rec_id.index==id.index){
 	m_trkHits.push_back(ass.getRec());
@@ -44,7 +48,7 @@ edm4hep::TrackerHit Navigation::GetTrackerHit(const edm4hep::ObjectID& obj_id, b
   */
   for(int i=0;i<m_hitColVec.size();i++){
     for(auto hit : *m_hitColVec[i]){
-      edm4hep::ObjectID this_id = hit.getObjectID();
+      auto this_id = hit.getObjectID();
       if(this_id.collectionID!=obj_id.collectionID)break;
       else if(this_id.index==obj_id.index){
 	edm4hep::TrackerHit hit_copy = edm4hep::TrackerHit(hit);
@@ -57,11 +61,15 @@ edm4hep::TrackerHit Navigation::GetTrackerHit(const edm4hep::ObjectID& obj_id, b
   throw std::runtime_error("Not found TrackerHit");
 }
 
+#if EDM4HEP_BUILD_VERSION <= EDM4HEP_VERSION(0, 10, 4)
 std::vector<edm4hep::SimTrackerHit> Navigation::GetRelatedTrackerHit(const edm4hep::ObjectID& id){
+#else
+std::vector<edm4hep::SimTrackerHit> Navigation::GetRelatedTrackerHit(const podio::ObjectID& id){
+#endif
   std::vector<edm4hep::SimTrackerHit> hits;
   for(int i=0;i<m_assColVec.size();i++){
     for(auto ass : *m_assColVec[i]){
-      edm4hep::ObjectID this_id = ass.getRec().getObjectID();
+      auto this_id = ass.getRec().getObjectID();
       if(this_id.collectionID!=id.collectionID)break;
       else if(this_id.index==id.index) hits.push_back(ass.getSim()); 
     }
@@ -79,3 +87,12 @@ std::vector<edm4hep::SimTrackerHit> Navigation::GetRelatedTrackerHit(const edm4h
   }
   return hits;
 }
+
+std::vector<edm4hep::SimTrackerHit> Navigation::GetRelatedTrackerHit(const edm4hep::TrackerHit& hit, const edm4hep::MCRecoTrackerAssociationCollection* col){
+  std::vector<edm4hep::SimTrackerHit> hits;
+  for(auto ass : *col){
+    if(ass.getRec().getObjectID().collectionID != hit.getObjectID().collectionID) break;
+    else if(ass.getRec()==hit) hits.push_back(ass.getSim());
+  }
+  return hits;
+}