diff --git a/phosphor-regulators/src/rail.hpp b/phosphor-regulators/src/rail.hpp
index 247e8ee..19e8a58 100644
--- a/phosphor-regulators/src/rail.hpp
+++ b/phosphor-regulators/src/rail.hpp
@@ -15,7 +15,12 @@
  */
 #pragma once
 
+#include "configuration.hpp"
+#include "sensor_monitoring.hpp"
+
+#include <memory>
 #include <string>
+#include <utility>
 
 namespace phosphor::power::regulators
 {
@@ -43,12 +48,31 @@
      * Constructor.
      *
      * @param id unique rail ID
+     * @param configuration configuration changes to apply to this rail, if any
+     * @param sensorMonitoring sensor monitoring for this rail, if any
      */
-    explicit Rail(const std::string& id) : id{id}
+    explicit Rail(
+        const std::string& id,
+        std::unique_ptr<Configuration> configuration = nullptr,
+        std::unique_ptr<SensorMonitoring> sensorMonitoring = nullptr) :
+        id{id},
+        configuration{std::move(configuration)}, sensorMonitoring{std::move(
+                                                     sensorMonitoring)}
     {
     }
 
     /**
+     * Returns the configuration changes to apply to this rail, if any.
+     *
+     * @return Pointer to Configuration object.  Will equal nullptr if no
+     *         configuration changes are defined for this rail.
+     */
+    const std::unique_ptr<Configuration>& getConfiguration() const
+    {
+        return configuration;
+    }
+
+    /**
      * Returns the unique ID of this rail.
      *
      * @return rail ID
@@ -58,11 +82,34 @@
         return id;
     }
 
+    /**
+     * Returns the sensor monitoring for this rail, if any.
+     *
+     * @return Pointer to SensorMonitoring object.  Will equal nullptr if no
+     *         sensor monitoring is defined for this rail.
+     */
+    const std::unique_ptr<SensorMonitoring>& getSensorMonitoring() const
+    {
+        return sensorMonitoring;
+    }
+
   private:
     /**
      * Unique ID of this rail.
      */
     const std::string id{};
+
+    /**
+     * Configuration changes to apply to this rail, if any.  Set to nullptr if
+     * no configuration changes are defined for this rail.
+     */
+    std::unique_ptr<Configuration> configuration{};
+
+    /**
+     * Sensor monitoring for this rail, if any.  Set to nullptr if no sensor
+     * monitoring is defined for this rail.
+     */
+    std::unique_ptr<SensorMonitoring> sensorMonitoring{};
 };
 
 } // namespace phosphor::power::regulators
