diff --git a/fan_enclosure.cpp b/fan_enclosure.cpp
index 346911d..46efeb5 100644
--- a/fan_enclosure.cpp
+++ b/fan_enclosure.cpp
@@ -13,6 +13,12 @@
     //TODO Add this fan to inventory
 }
 
+void FanEnclosure::addSensor(
+    std::unique_ptr<Sensor>&& sensor)
+{
+    FanEnclosure::sensors.push_back(std::move(sensor));
+}
+
 } // namespace presence
 } // namespace fan
 } // namespace phosphor
diff --git a/fan_enclosure.hpp b/fan_enclosure.hpp
index f214f18..0b96bfc 100644
--- a/fan_enclosure.hpp
+++ b/fan_enclosure.hpp
@@ -2,6 +2,7 @@
 
 #include <sdbusplus/bus.hpp>
 #include "fan_properties.hpp"
+#include "sensor_base.hpp"
 
 
 namespace phosphor
@@ -31,10 +32,14 @@
             addInventory();
         }
 
+        void addSensor(
+            std::unique_ptr<Sensor>&& sensor);
+
     private:
         sdbusplus::bus::bus& bus;
         const std::string invPath;
         const std::string fanDesc;
+        std::vector<std::unique_ptr<Sensor>> sensors;
 
         void addInventory();
 
diff --git a/sensor_base.hpp b/sensor_base.hpp
index 92f53a7..2dc2b8d 100644
--- a/sensor_base.hpp
+++ b/sensor_base.hpp
@@ -19,9 +19,19 @@
         Sensor& operator=(Sensor&&) = delete;
         virtual ~Sensor() = default;
 
+        Sensor(const std::string& id,
+               FanEnclosure& fanEnc) :
+            id(id),
+            fanEnc(fanEnc)
+        {
+            //Nothing to do here
+        }
+
         virtual bool isPresent() = 0;
 
     protected:
+        const std::string id;
+        FanEnclosure& fanEnc;
 
 };
 
diff --git a/tach_detect.cpp b/tach_detect.cpp
index e3d2389..5da1b48 100644
--- a/tach_detect.cpp
+++ b/tach_detect.cpp
@@ -2,6 +2,7 @@
 #include <sdbusplus/bus.hpp>
 #include "fan_enclosure.hpp"
 #include "fan_detect_defs.hpp"
+#include "tach_sensor.hpp"
 
 
 int main(void)
@@ -19,7 +20,14 @@
                 auto fan = std::make_unique<
                     phosphor::fan::presence::FanEnclosure>(bus,
                                                            fanProp);
-                // TODO Add sensors to fan object
+                for (auto const &fanSensor: std::get<2>(fanProp))
+                {
+                    auto sensor = std::make_unique<
+                        phosphor::fan::presence::TachSensor>(bus,
+                                                             fanSensor,
+                                                             *fan);
+                    fan->addSensor(std::move(sensor));
+                }
                 fans.push_back(std::move(fan));
             }
         }
diff --git a/tach_sensor.cpp b/tach_sensor.cpp
index 1325365..987e390 100644
--- a/tach_sensor.cpp
+++ b/tach_sensor.cpp
@@ -10,7 +10,7 @@
 
 bool TachSensor::isPresent()
 {
-    return false;
+    return (tach != 0);
 }
 
 } // namespace presence
diff --git a/tach_sensor.hpp b/tach_sensor.hpp
index 0ef2b0a..24ee453 100644
--- a/tach_sensor.hpp
+++ b/tach_sensor.hpp
@@ -1,5 +1,6 @@
 #pragma once
 
+#include <sdbusplus/bus.hpp>
 #include "sensor_base.hpp"
 
 
@@ -20,9 +21,19 @@
         TachSensor& operator=(TachSensor&&) = delete;
         ~TachSensor() = default;
 
+        TachSensor(sdbusplus::bus::bus& bus,
+                   const std::string& id,
+                   FanEnclosure& fanEnc) : Sensor(id, fanEnc),
+                       bus(bus)
+        {
+            // Nothing to do here
+        }
+
         bool isPresent();
 
     private:
+        sdbusplus::bus::bus& bus;
+        int64_t tach = 0;
 
 };
 
