diff --git a/scripts/writeentity.mako.cpp b/scripts/writeentity.mako.cpp
index 110eca9..04ea87c 100644
--- a/scripts/writeentity.mako.cpp
+++ b/scripts/writeentity.mako.cpp
@@ -5,7 +5,8 @@
 #include <ipmid/types.hpp>
 #include <utility>
 
-using namespace ipmi::sensor;
+namespace ipmi {
+namespace sensor {
 
 extern const EntityInfoMap entities = {
 % for key in entityDict.iterkeys():
@@ -34,3 +35,6 @@
 }},
 % endfor
 };
+
+} // namespace sensor
+} // namespace ipmi
diff --git a/sensorhandler.cpp b/sensorhandler.cpp
index d2594f5..1901464 100644
--- a/sensorhandler.cpp
+++ b/sensorhandler.cpp
@@ -28,7 +28,6 @@
 extern sd_bus* bus;
 extern const ipmi::sensor::IdInfoMap sensors;
 extern const FruMap frus;
-extern const ipmi::sensor::EntityInfoMap entities;
 
 using namespace phosphor::logging;
 using InternalFailure =
@@ -78,11 +77,20 @@
     uint8_t indication[2];
 } __attribute__((packed));
 
-const ipmi::sensor::EntityInfoMap& getIpmiEntityRecords()
+namespace ipmi
+{
+namespace sensor
+{
+extern const EntityInfoMap entities;
+
+const EntityInfoMap& getIpmiEntityRecords()
 {
     return entities;
 }
 
+} // namespace sensor
+} // namespace ipmi
+
 int get_bus_for_path(const char* path, char** busname)
 {
     return mapper_get_service(bus, path, busname);
@@ -599,7 +607,7 @@
     if (count.value_or(0) == getSdrCount)
     {
         // Get SDR count. This returns the total number of SDRs in the device.
-        const auto& entityRecords = getIpmiEntityRecords();
+        const auto& entityRecords = ipmi::sensor::getIpmiEntityRecords();
         sdrCount = sensors.size() + frus.size() + entityRecords.size();
     }
     else if (count.value_or(0) == getSensorCount)
@@ -767,7 +775,7 @@
     {
         // we have reached till end of fru, so assign the next record id to
         // 512(Max fru ID = 511) + Entity Record ID(may start with 0).
-        const auto& entityRecords = getIpmiEntityRecords();
+        const auto& entityRecords = ipmi::sensor::getIpmiEntityRecords();
         auto next_record_id =
             (entityRecords.size())
                 ? entityRecords.begin()->first + ENTITY_RECORD_ID_START
@@ -806,7 +814,7 @@
     get_sdr::SensorDataEntityRecord record{};
     auto dataLength = 0;
 
-    const auto& entityRecords = getIpmiEntityRecords();
+    const auto& entityRecords = ipmi::sensor::getIpmiEntityRecords();
     auto entity = entityRecords.begin();
     uint8_t entityRecordID;
     auto recordID = get_sdr::request::get_record_id(req);
