diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6876f05f95a082706a1fa305a45174312bdef3d0..5c1f685bce556948eaef0ba399538977624d1ca7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -14,7 +14,7 @@ if(APPLE)
 endif(APPLE)
 
 
-find_package(podio 0.14.1 REQUIRED)
+find_package(podio 0.15 REQUIRED)
 include_directories(${podio_INCLUDE_DIR})
 
 find_package(EDM4HEP 0.4.1 REQUIRED)
@@ -25,7 +25,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
 find_package(ROOT REQUIRED COMPONENTS Core RIO Tree)
 include(${ROOT_USE_FILE})
 
-PODIO_GENERATE_DATAMODEL(eicd eic_data.yaml headers sources
+PODIO_GENERATE_DATAMODEL(eicd eic_data.yaml headers sources 
   UPSTREAM_EDM edm4hep:${EDM4HEP_DATA_DIR}/edm4hep.yaml
   OUTPUT_FOLDER ${CMAKE_CURRENT_BINARY_DIR}
   )
diff --git a/utils/include/eicd/vector_utils_legacy.h b/utils/include/eicd/vector_utils_legacy.h
index c0b341f43fda5caefb7d4c0e7caf1d201bdd2e54..92d3898c809c6baaac4bfabe018203634459b03b 100644
--- a/utils/include/eicd/vector_utils_legacy.h
+++ b/utils/include/eicd/vector_utils_legacy.h
@@ -8,6 +8,7 @@
 #else
 #include <cmath>
 
+#include <edm4hep/Vector2f.h>
 #include <edm4hep/Vector3f.h>
 #include <eicd/Vector2f.h>
 #include <eicd/Vector3f.h>
@@ -34,11 +35,24 @@ template <>
 inline auto vector_y<eicd::Vector2f>(const eicd::Vector2f& v) {
   return v.b;
 }
+// Vector2f uses a,b instead of x,y
+template <>
+inline auto vector_x<edm4hep::Vector2f>(const edm4hep::Vector2f& v) {
+  return v.a;
+}
+template <>
+inline auto vector_y<edm4hep::Vector2f>(const edm4hep::Vector2f& v) {
+  return v.b;
+}
 // no z-component for 2D vectors
 template <>
 inline auto vector_z<eicd::Vector2f>(const eicd::Vector2f& v) {
   return 0;
 }
+template <>
+inline auto vector_z<edm4hep::Vector2f>(const edm4hep::Vector2f& v) {
+  return 0;
+}
 
 // inline edm4hep::Vector2f VectorFromPolar(const double r, const double theta)
 // {