diff --git a/occ_pass_through.cpp b/occ_pass_through.cpp
new file mode 100644
index 0000000..aef0e04
--- /dev/null
+++ b/occ_pass_through.cpp
@@ -0,0 +1,53 @@
+#include <memory>
+#include <iostream>
+#include "occ_pass_through.hpp"
+#include "occ_finder.hpp"
+
+namespace open_power
+{
+namespace occ
+{
+namespace pass_through
+{
+
+void run()
+{
+    auto bus = sdbusplus::bus::new_default();
+    sdbusplus::server::manager::manager objManager(bus,
+                                                   OCC_PASS_THROUGH_ROOT);
+
+    std::vector<std::unique_ptr<PassThrough>> objects;
+    auto occs = open_power::occ::finder::get();
+
+    for (const auto& occ : occs)
+    {
+        auto occPassThrough = object(occ);
+        objects.emplace_back(
+            std::make_unique<PassThrough>(bus, occPassThrough.c_str()));
+    }
+    bus.request_name(OCC_PASS_THROUGH_BUSNAME);
+
+    while (true)
+    {
+        bus.process_discard();
+        bus.wait();
+    }
+}
+
+PassThrough::PassThrough(
+    sdbusplus::bus::bus& bus,
+    const char* path) :
+    Iface(bus, path),
+    path(path)
+{
+    this->emit_object_added();
+}
+
+std::vector<int32_t> PassThrough::send(std::vector<int32_t> command)
+{
+    return {};
+}
+
+} // namespace pass_through
+} // namespace occ
+} // namespace open_power
