diff --git a/pmbus.cpp b/pmbus.cpp
index 85e7c43..bd9e697 100644
--- a/pmbus.cpp
+++ b/pmbus.cpp
@@ -48,18 +48,25 @@
     return name;
 }
 
-bool PMBus::readBitInPage(const std::string& name, size_t page)
+bool PMBus::readBitInPage(const std::string& name,
+                          size_t page,
+                          Type type)
 {
     auto pagedBit = insertPageNum(name, page);
-    return readBit(pagedBit);
+    return readBit(pagedBit, type);
 }
 
-bool PMBus::readBit(const std::string& name)
+bool PMBus::readBit(const std::string& name, Type type)
 {
     unsigned long int value = 0;
     std::ifstream file;
     fs::path path{basePath};
 
+    if (type == Type::Hwmon)
+    {
+        path /= hwmonRelPath;
+    }
+
     path /= name;
 
     file.exceptions(std::ifstream::failbit |
@@ -103,11 +110,16 @@
     return value != 0;
 }
 
-void PMBus::write(const std::string& name, int value)
+void PMBus::write(const std::string& name, int value, Type type)
 {
     std::ofstream file;
     fs::path path{basePath};
 
+    if (type == Type::Hwmon)
+    {
+        path /= hwmonRelPath;
+    }
+
     path /= name;
 
     file.exceptions(std::ofstream::failbit |
@@ -134,5 +146,34 @@
     }
 }
 
+void PMBus::findHwmonRelativePath()
+{
+    fs::path path{basePath};
+    path /= "hwmon";
+
+    //look for <basePath>/hwmon/hwmonN/
+    for (auto& f : fs::directory_iterator(path))
+    {
+        if ((f.path().filename().string().find("hwmon") !=
+            std::string::npos) &&
+            (fs::is_directory(f.path())))
+        {
+            hwmonRelPath = "hwmon";
+            hwmonRelPath /= f.path().filename();
+            break;
+        }
+    }
+
+    //Don't really want to crash here, just log it
+    //and let accesses fail later
+    if (hwmonRelPath.empty())
+    {
+        log<level::ERR>("Unable to find hwmon directory "
+                        "in device base path",
+                        entry("DEVICE_PATH=%s", basePath.c_str()));
+    }
+
+}
+
 }
 }
