diff --git a/cable.hpp b/cable.hpp
index 6e559c0..58b82ce 100644
--- a/cable.hpp
+++ b/cable.hpp
@@ -19,7 +19,7 @@
 // Handle the cablecheck.  Sys must supply which ethernet device they're
 // interested in.
 ipmi_ret_t cableCheck(const uint8_t* reqBuf, uint8_t* replyBuf, size_t* dataLen,
-                      const HandlerInterface* handler = &handlerImpl);
+                      const HandlerInterface* handler);
 
 } // namespace ipmi
 } // namespace google
diff --git a/cpld.hpp b/cpld.hpp
index 5c747ed..4c8e059 100644
--- a/cpld.hpp
+++ b/cpld.hpp
@@ -11,8 +11,7 @@
 
 // Given a cpld identifier, return a version if available.
 ipmi_ret_t cpldVersion(const uint8_t* reqBuf, uint8_t* replyBuf,
-                       size_t* dataLen,
-                       const HandlerInterface* handler = &handlerImpl);
+                       size_t* dataLen, const HandlerInterface* handler);
 
 } // namespace ipmi
 } // namespace google
diff --git a/entity_name.hpp b/entity_name.hpp
index c04b996..5ed442b 100644
--- a/entity_name.hpp
+++ b/entity_name.hpp
@@ -12,8 +12,7 @@
 // Handle the "entity id:entity instance" to entity name mapping command.
 // Sys can query the entity name for a particular "entity id:entity instance".
 ipmi_ret_t getEntityName(const uint8_t* reqBuf, uint8_t* replyBuf,
-                         size_t* dataLen,
-                         HandlerInterface* handler = &handlerImpl);
+                         size_t* dataLen, HandlerInterface* handler);
 
 } // namespace ipmi
 } // namespace google
diff --git a/eth.hpp b/eth.hpp
index fee363d..4454818 100644
--- a/eth.hpp
+++ b/eth.hpp
@@ -25,8 +25,7 @@
 // Sys can query the ifName and IPMI channel of the BMC's NCSI ethernet
 // device.
 ipmi_ret_t getEthDevice(const uint8_t* reqBuf, uint8_t* replyBuf,
-                        size_t* dataLen,
-                        const HandlerInterface* handler = &handlerImpl);
+                        size_t* dataLen, const HandlerInterface* handler);
 
 } // namespace ipmi
 } // namespace google
diff --git a/handler.cpp b/handler.cpp
index 341e195..4605e2f 100644
--- a/handler.cpp
+++ b/handler.cpp
@@ -17,6 +17,7 @@
 #include "handler.hpp"
 
 #include "errors.hpp"
+#include "handler_impl.hpp"
 #include "util.hpp"
 
 #include <ipmid/api.h>
@@ -276,7 +277,5 @@
 const std::string defaultConfigFile =
     "/usr/share/ipmi-entity-association/entity_association_map.json";
 
-Handler handlerImpl;
-
 } // namespace ipmi
 } // namespace google
diff --git a/handler.hpp b/handler.hpp
index cc16448..36a377b 100644
--- a/handler.hpp
+++ b/handler.hpp
@@ -15,8 +15,6 @@
 using VersionTuple =
     std::tuple<std::uint8_t, std::uint8_t, std::uint8_t, std::uint8_t>;
 
-extern const std::string defaultConfigFile;
-
 class HandlerInterface
 {
   public:
@@ -91,48 +89,6 @@
         getI2cEntry(unsigned int entry) const = 0;
 };
 
-class Handler : public HandlerInterface
-{
-  public:
-    explicit Handler(const std::string& entityConfigPath = defaultConfigFile) :
-        _configFile(entityConfigPath){};
-    ~Handler() = default;
-
-    std::tuple<std::uint8_t, std::string> getEthDetails() const override;
-    std::int64_t getRxPackets(const std::string& name) const override;
-    VersionTuple getCpldVersion(unsigned int id) const override;
-    void psuResetDelay(std::uint32_t delay) const override;
-    std::string getEntityName(std::uint8_t id, std::uint8_t instance) override;
-    void buildI2cPcieMapping() override;
-    size_t getI2cPcieMappingSize() const override;
-    std::tuple<std::uint32_t, std::string>
-        getI2cEntry(unsigned int entry) const override;
-
-  private:
-    std::string _configFile;
-
-    bool _entityConfigParsed = false;
-
-    const std::map<uint8_t, std::string> _entityIdToName{
-        {0x03, "cpu"},
-        {0x04, "storage_device"},
-        {0x06, "system_management_module"},
-        {0x07, "system_board"},
-        {0x08, "memory_module"},
-        {0x0B, "add_in_card"},
-        {0x0E, "power_system_board"},
-        {0x10, "system_internal_expansion_board"},
-        {0x11, "other_system_board"},
-        {0x17, "system_chassis"},
-        {0x1D, "fan"},
-        {0x1E, "cooling_unit"},
-        {0x20, "memory_device"}};
-
-    nlohmann::json _entityConfig{};
-
-    std::vector<std::tuple<uint32_t, std::string>> _pcie_i2c_map;
-};
-
 /**
  * Given a type, entity instance, and a configuration, return the name.
  *
@@ -144,7 +100,5 @@
 std::string readNameFromConfig(const std::string& type, uint8_t instance,
                                const nlohmann::json& config);
 
-extern Handler handlerImpl;
-
 } // namespace ipmi
 } // namespace google
diff --git a/handler_impl.hpp b/handler_impl.hpp
new file mode 100644
index 0000000..08452d7
--- /dev/null
+++ b/handler_impl.hpp
@@ -0,0 +1,62 @@
+#pragma once
+
+#include "handler.hpp"
+
+#include <cstdint>
+#include <map>
+#include <nlohmann/json.hpp>
+#include <string>
+#include <tuple>
+#include <vector>
+
+namespace google
+{
+namespace ipmi
+{
+
+extern const std::string defaultConfigFile;
+
+class Handler : public HandlerInterface
+{
+  public:
+    explicit Handler(const std::string& entityConfigPath = defaultConfigFile) :
+        _configFile(entityConfigPath){};
+    ~Handler() = default;
+
+    std::tuple<std::uint8_t, std::string> getEthDetails() const override;
+    std::int64_t getRxPackets(const std::string& name) const override;
+    VersionTuple getCpldVersion(unsigned int id) const override;
+    void psuResetDelay(std::uint32_t delay) const override;
+    std::string getEntityName(std::uint8_t id, std::uint8_t instance) override;
+    void buildI2cPcieMapping() override;
+    size_t getI2cPcieMappingSize() const override;
+    std::tuple<std::uint32_t, std::string>
+        getI2cEntry(unsigned int entry) const override;
+
+  private:
+    std::string _configFile;
+
+    bool _entityConfigParsed = false;
+
+    const std::map<uint8_t, std::string> _entityIdToName{
+        {0x03, "cpu"},
+        {0x04, "storage_device"},
+        {0x06, "system_management_module"},
+        {0x07, "system_board"},
+        {0x08, "memory_module"},
+        {0x0B, "add_in_card"},
+        {0x0E, "power_system_board"},
+        {0x10, "system_internal_expansion_board"},
+        {0x11, "other_system_board"},
+        {0x17, "system_chassis"},
+        {0x1D, "fan"},
+        {0x1E, "cooling_unit"},
+        {0x20, "memory_device"}};
+
+    nlohmann::json _entityConfig{};
+
+    std::vector<std::tuple<uint32_t, std::string>> _pcie_i2c_map;
+};
+
+} // namespace ipmi
+} // namespace google
diff --git a/main.cpp b/main.cpp
index 372cc04..f1cb516 100644
--- a/main.cpp
+++ b/main.cpp
@@ -20,6 +20,7 @@
 #include "cpld.hpp"
 #include "entity_name.hpp"
 #include "eth.hpp"
+#include "handler_impl.hpp"
 #include "pcie_i2c.hpp"
 #include "psu.hpp"
 
@@ -43,6 +44,8 @@
 namespace ipmi
 {
 
+Handler handlerImpl;
+
 static ipmi_ret_t handleSysCommand(ipmi_cmd_t cmd, const uint8_t* reqBuf,
                                    uint8_t* replyCmdBuf, size_t* dataLen)
 {
@@ -57,19 +60,20 @@
     switch (reqBuf[0])
     {
         case SysCableCheck:
-            return cableCheck(reqBuf, replyCmdBuf, dataLen);
+            return cableCheck(reqBuf, replyCmdBuf, dataLen, &handlerImpl);
         case SysCpldVersion:
-            return cpldVersion(reqBuf, replyCmdBuf, dataLen);
+            return cpldVersion(reqBuf, replyCmdBuf, dataLen, &handlerImpl);
         case SysGetEthDevice:
-            return getEthDevice(reqBuf, replyCmdBuf, dataLen);
+            return getEthDevice(reqBuf, replyCmdBuf, dataLen, &handlerImpl);
         case SysPsuHardReset:
-            return psuHardReset(reqBuf, replyCmdBuf, dataLen);
+            return psuHardReset(reqBuf, replyCmdBuf, dataLen, &handlerImpl);
         case SysPcieSlotCount:
-            return pcieSlotCount(reqBuf, replyCmdBuf, dataLen);
+            return pcieSlotCount(reqBuf, replyCmdBuf, dataLen, &handlerImpl);
         case SysPcieSlotI2cBusMapping:
-            return pcieSlotI2cBusMapping(reqBuf, replyCmdBuf, dataLen);
+            return pcieSlotI2cBusMapping(reqBuf, replyCmdBuf, dataLen,
+                                         &handlerImpl);
         case SysEntityName:
-            return getEntityName(reqBuf, replyCmdBuf, dataLen);
+            return getEntityName(reqBuf, replyCmdBuf, dataLen, &handlerImpl);
         default:
             std::fprintf(stderr, "Invalid subcommand: 0x%x\n", reqBuf[0]);
             return IPMI_CC_INVALID;
diff --git a/pcie_i2c.hpp b/pcie_i2c.hpp
index ef89865..556cd23 100644
--- a/pcie_i2c.hpp
+++ b/pcie_i2c.hpp
@@ -12,14 +12,12 @@
 //  Handle the pcie slot count command.
 //  Sys can query the number of pcie slots.
 ipmi_ret_t pcieSlotCount(const uint8_t* reqBuf, uint8_t* replyBuf,
-                         size_t* dataLen,
-                         HandlerInterface* handler = &handlerImpl);
+                         size_t* dataLen, HandlerInterface* handler);
 
 // Handle the pcie slot to i2c bus mapping command.
 // Sys can query which i2c bus is routed to which pcie slot.
 ipmi_ret_t pcieSlotI2cBusMapping(const uint8_t* reqBuf, uint8_t* replyBuf,
-                                 size_t* dataLen,
-                                 HandlerInterface* handler = &handlerImpl);
+                                 size_t* dataLen, HandlerInterface* handler);
 
 } // namespace ipmi
 } // namespace google
diff --git a/psu.hpp b/psu.hpp
index d2c5fbe..d45ce7f 100644
--- a/psu.hpp
+++ b/psu.hpp
@@ -18,8 +18,7 @@
 
 // Set a time-delayed PSU hard reset.
 ipmi_ret_t psuHardReset(const uint8_t* reqBuf, uint8_t* replyBuf,
-                        size_t* dataLen,
-                        const HandlerInterface* handler = &handlerImpl);
+                        size_t* dataLen, const HandlerInterface* handler);
 
 } // namespace ipmi
 } // namespace google
diff --git a/test/handler_unittest.cpp b/test/handler_unittest.cpp
index a4f9281..99782fa 100644
--- a/test/handler_unittest.cpp
+++ b/test/handler_unittest.cpp
@@ -1,5 +1,6 @@
 #include "errors.hpp"
 #include "handler.hpp"
+#include "handler_impl.hpp"
 
 #include <fstream>
 #include <nlohmann/json.hpp>
