diff --git a/occ_pass_through.hpp b/occ_pass_through.hpp
new file mode 100644
index 0000000..835241f
--- /dev/null
+++ b/occ_pass_through.hpp
@@ -0,0 +1,69 @@
+#pragma once
+
+#include <string>
+#include <vector>
+#include <sdbusplus/bus.hpp>
+#include <sdbusplus/server/object.hpp>
+#include "org/open_power/OCC/PassThrough/server.hpp"
+#include "config.h"
+
+namespace open_power
+{
+namespace occ
+{
+namespace pass_through
+{
+
+/** @brief Make occ pass-through d-bus object pathname
+ *  @param[in] occ - occ name
+ *  @returns occ pass-through path
+ */
+inline auto object(const std::string& occ)
+{
+    return std::string(OCC_PASS_THROUGH_ROOT) +
+           '/' +
+           occ;
+}
+
+/** @brief Put occ pass through objects on the bus
+ */
+void run();
+
+using Iface = sdbusplus::server::object::object<
+    sdbusplus::org::open_power::OCC::server::PassThrough>;
+
+/** @class PassThrough
+ *  @brief Implements org.open_power.OCC.PassThrough
+ */
+class PassThrough : public Iface
+{
+    public:
+        PassThrough() = delete;
+        PassThrough(const PassThrough&) = delete;
+        PassThrough& operator=(const PassThrough&) = delete;
+        PassThrough(PassThrough&&) = default;
+        PassThrough& operator=(PassThrough&&) = default;
+        ~PassThrough() = default;
+
+        /** @brief Ctor to put pass-through d-bus object on the bus
+         *  @param[in] bus - Bus to attach to
+         *  @param[in] path - Path to attach at
+         */
+        PassThrough(sdbusplus::bus::bus& bus,
+                    const char* path);
+
+        /** @brief Pass through command to OCC
+         *  @param[in] command - command to pass-through
+         *  @returns OCC response as an array
+         */
+        std::vector<std::int32_t>
+            send(std::vector<std::int32_t> command) override;
+
+    private:
+        /** @brief Pass-through occ path on the bus */
+        std::string path;
+};
+
+} // namespace pass_through
+} // namespace occ
+} // namespace open_power
