diff --git a/fan_enclosure.cpp b/fan_enclosure.cpp
index 5bd14e5..346911d 100644
--- a/fan_enclosure.cpp
+++ b/fan_enclosure.cpp
@@ -8,6 +8,10 @@
 namespace presence
 {
 
+void FanEnclosure::addInventory()
+{
+    //TODO Add this fan to inventory
+}
 
 } // namespace presence
 } // namespace fan
diff --git a/fan_enclosure.hpp b/fan_enclosure.hpp
index a94ffe7..f214f18 100644
--- a/fan_enclosure.hpp
+++ b/fan_enclosure.hpp
@@ -1,5 +1,8 @@
 #pragma once
 
+#include <sdbusplus/bus.hpp>
+#include "fan_properties.hpp"
+
 
 namespace phosphor
 {
@@ -15,10 +18,25 @@
         FanEnclosure(const FanEnclosure&) = delete;
         FanEnclosure(FanEnclosure&&) = default;
         FanEnclosure& operator=(const FanEnclosure&) = delete;
-        FanEnclosure& operator=(FanEnclosure&&) = default;
+        FanEnclosure& operator=(FanEnclosure&&) = delete;
         ~FanEnclosure() = default;
 
+        FanEnclosure(sdbusplus::bus::bus& bus,
+                     const phosphor::fan::Properties& fanProp) :
+                        bus(bus),
+                        invPath(std::get<0>(fanProp)),
+                        fanDesc(std::get<1>(fanProp))
+        {
+            //Add this fan to inventory
+            addInventory();
+        }
+
     private:
+        sdbusplus::bus::bus& bus;
+        const std::string invPath;
+        const std::string fanDesc;
+
+        void addInventory();
 
 };
 
diff --git a/fan_properties.hpp b/fan_properties.hpp
new file mode 100644
index 0000000..22d655a
--- /dev/null
+++ b/fan_properties.hpp
@@ -0,0 +1,18 @@
+#pragma once
+
+#include <string>
+#include <vector>
+#include <tuple>
+
+
+namespace phosphor
+{
+namespace fan
+{
+
+using Properties = std::tuple<std::string,
+                              std::string,
+                              std::vector<std::string>>;
+
+} // namespace fan
+} // namespace phosphor
diff --git a/tach_detect.cpp b/tach_detect.cpp
index 9b2ccd1..e3d2389 100644
--- a/tach_detect.cpp
+++ b/tach_detect.cpp
@@ -1,10 +1,30 @@
 #include <vector>
 #include <sdbusplus/bus.hpp>
+#include "fan_enclosure.hpp"
+#include "fan_detect_defs.hpp"
+
 
 int main(void)
 {
     auto bus = sdbusplus::bus::new_default();
 
+    std::vector<std::unique_ptr<phosphor::fan::presence::FanEnclosure>> fans;
+
+    for (auto const& detectMap: fanDetectMap)
+    {
+        if (detectMap.first == "tach")
+        {
+            for (auto const& fanProp: detectMap.second)
+            {
+                auto fan = std::make_unique<
+                    phosphor::fan::presence::FanEnclosure>(bus,
+                                                           fanProp);
+                // TODO Add sensors to fan object
+                fans.push_back(std::move(fan));
+            }
+        }
+    }
+
     while (true)
     {
         // Respond to dbus signals
