diff --git a/src/util.cpp b/src/util.cpp
index 03d7398..f6880c3 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -17,8 +17,6 @@
 #endif
 #include <phosphor-logging/elog-errors.hpp>
 #include <phosphor-logging/log.hpp>
-#include <stdexcept>
-#include <stdplus/raw.hpp>
 #include <string>
 #include <string_view>
 #include <variant>
@@ -131,32 +129,6 @@
 
 } // namespace internal
 
-constexpr auto familyVisit(auto&& visitor, int family)
-{
-    if (family == AF_INET)
-    {
-        return visitor.template operator()<AF_INET>();
-    }
-    else if (family == AF_INET6)
-    {
-        return visitor.template operator()<AF_INET6>();
-    }
-    throw std::invalid_argument("Invalid addr family");
-}
-
-template <int family>
-typename FamilyTraits<family>::addr addrFromBuf(std::string_view buf)
-{
-    return stdplus::raw::copyFromStrict<typename FamilyTraits<family>::addr>(
-        buf);
-}
-
-InAddrAny addrFromBuf(int family, std::string_view buf)
-{
-    return familyVisit(
-        [=]<int f>() -> InAddrAny { return addrFromBuf<f>(buf); }, family);
-}
-
 void deleteInterface(stdplus::const_zstring intf)
 {
     pid_t pid = fork();
diff --git a/src/util.hpp b/src/util.hpp
index 93b2925..3638160 100644
--- a/src/util.hpp
+++ b/src/util.hpp
@@ -9,6 +9,7 @@
 #include <filesystem>
 #include <optional>
 #include <sdbusplus/bus.hpp>
+#include <stdplus/raw.hpp>
 #include <stdplus/zstring.hpp>
 #include <string>
 #include <string_view>
@@ -56,31 +57,22 @@
 
 } // namespace mac_address
 
-template <int family>
-struct FamilyTraits
-{
-};
-
-template <>
-struct FamilyTraits<AF_INET>
-{
-    using addr = in_addr;
-};
-
-template <>
-struct FamilyTraits<AF_INET6>
-{
-    using addr = in6_addr;
-};
-
 /* @brief converts a sockaddr for the specified address family into
  *        a type_safe InAddrAny.
  * @param[in] family - The address family of the buf
  * @param[in] buf - The network byte order address
  */
-template <int family>
-typename FamilyTraits<family>::addr addrFromBuf(std::string_view buf);
-InAddrAny addrFromBuf(int family, std::string_view buf);
+constexpr InAddrAny addrFromBuf(int family, std::string_view buf)
+{
+    switch (family)
+    {
+        case AF_INET:
+            return stdplus::raw::copyFromStrict<in_addr>(buf);
+        case AF_INET6:
+            return stdplus::raw::copyFromStrict<in6_addr>(buf);
+    }
+    throw std::invalid_argument("Unrecognized family");
+}
 
 /** @brief Delete the given interface.
  *  @param[in] intf - interface name.
