diff --git a/src/CPUSensor.cpp b/src/CPUSensor.cpp
index d3789fd..241b14f 100644
--- a/src/CPUSensor.cpp
+++ b/src/CPUSensor.cpp
@@ -53,26 +53,39 @@
 
     if (show)
     {
-        sensorInterface = objectServer.add_interface(
-            "/xyz/openbmc_project/sensors/temperature/" + name,
-            "xyz.openbmc_project.Sensor.Value");
-        if (thresholds::hasWarningInterface(thresholds))
+        if (auto fileParts = thresholds::splitFileName(path))
         {
-            thresholdInterfaceWarning = objectServer.add_interface(
-                "/xyz/openbmc_project/sensors/temperature/" + name,
-                "xyz.openbmc_project.Sensor.Threshold.Warning");
-        }
-        if (thresholds::hasCriticalInterface(thresholds))
-        {
-            thresholdInterfaceCritical = objectServer.add_interface(
-                "/xyz/openbmc_project/sensors/temperature/" + name,
-                "xyz.openbmc_project.Sensor.Threshold.Critical");
-        }
-        association = objectServer.add_interface(
-            "/xyz/openbmc_project/sensors/temperature/" + name,
-            association::interface);
+            auto [type, nr, item] = *fileParts;
+            std::string interfacePath;
+            if (type.compare("power") == 0)
+            {
+                interfacePath = "/xyz/openbmc_project/sensors/power/" + name;
+            }
+            else
+            {
+                interfacePath =
+                    "/xyz/openbmc_project/sensors/temperature/" + name;
+            }
 
-        setInitialProperties(conn);
+            sensorInterface = objectServer.add_interface(
+                interfacePath, "xyz.openbmc_project.Sensor.Value");
+            if (thresholds::hasWarningInterface(thresholds))
+            {
+                thresholdInterfaceWarning = objectServer.add_interface(
+                    interfacePath,
+                    "xyz.openbmc_project.Sensor.Threshold.Warning");
+            }
+            if (thresholds::hasCriticalInterface(thresholds))
+            {
+                thresholdInterfaceCritical = objectServer.add_interface(
+                    interfacePath,
+                    "xyz.openbmc_project.Sensor.Threshold.Critical");
+            }
+            association = objectServer.add_interface(interfacePath,
+                                                     association::interface);
+
+            setInitialProperties(conn);
+        }
     }
     setupPowerMatch(conn);
     setupRead();
