diff --git a/include/ExternalSensor.hpp b/include/ExternalSensor.hpp
new file mode 100644
index 0000000..bf3e885
--- /dev/null
+++ b/include/ExternalSensor.hpp
@@ -0,0 +1,31 @@
+#pragma once
+
+#include "Thresholds.hpp"
+#include "sensor.hpp"
+
+#include <sdbusplus/asio/object_server.hpp>
+
+#include <string>
+#include <vector>
+
+class ExternalSensor :
+    public Sensor,
+    public std::enable_shared_from_this<ExternalSensor>
+{
+  public:
+    ExternalSensor(const std::string& objectType,
+                   sdbusplus::asio::object_server& objectServer,
+                   std::shared_ptr<sdbusplus::asio::connection>& conn,
+                   const std::string& sensorName,
+                   const std::string& sensorMeasure,
+                   std::vector<thresholds::Threshold>&& _thresholds,
+                   const std::string& sensorConfiguration,
+                   const double& maxReading, const double& minReading,
+                   const PowerState& powerState);
+    virtual ~ExternalSensor();
+
+  private:
+    sdbusplus::asio::object_server& objServer;
+
+    void checkThresholds(void) override;
+};
diff --git a/include/SensorPaths.hpp b/include/SensorPaths.hpp
new file mode 100644
index 0000000..7becd18
--- /dev/null
+++ b/include/SensorPaths.hpp
@@ -0,0 +1,55 @@
+#pragma once
+
+#include <cstring>
+#include <string>
+
+namespace sensors
+{
+
+// This is the leading prefix of the object path for sensors.
+// The full path is /xyz/openbmc_project/sensors/<Measure>/<Name>
+// Note C++20 would allow this to be "constexpr std::string"
+const char* objectPathPrefix = "/xyz/openbmc_project/sensors/";
+
+// This is an allowlist of the units a sensor can measure. Should be in sync
+// with
+// phosphor-dbus-interfaces/blob/master/xyz/openbmc_project/Sensor/Value.interface.yaml#L35
+
+std::string getPathForUnits(const std::string& units)
+{
+    if (units == "DegreesC")
+    {
+        return "temperature";
+    }
+    if (units == "RPMS")
+    {
+        return "fan_tach";
+    }
+    if (units == "Volts")
+    {
+        return "voltage";
+    }
+    if (units == "Meters")
+    {
+        return "altitude";
+    }
+    if (units == "Amperes")
+    {
+        return "current";
+    }
+    if (units == "Watts")
+    {
+        return "power";
+    }
+    if (units == "Joules")
+    {
+        return "energy";
+    }
+    if (units == "Percent")
+    {
+        return "Utilization";
+    }
+    return "";
+}
+
+} // namespace sensors
