diff --git a/sensordatahandler.hpp b/sensordatahandler.hpp
index 129cbb4..99c3ae9 100644
--- a/sensordatahandler.hpp
+++ b/sensordatahandler.hpp
@@ -156,7 +156,6 @@
 {
     sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
     GetSensorResponse response{};
-    auto responseData = reinterpret_cast<GetReadingResponse*>(response.data());
 
     auto service = ipmi::getService(bus, sensorInfo.sensorInterface,
                                     sensorInfo.sensorPath);
@@ -166,8 +165,7 @@
         sensorInfo.propertyInterfaces.begin()->first,
         sensorInfo.propertyInterfaces.begin()->second.begin()->first);
 
-    setAssertionBytes(static_cast<uint16_t>(std::get<T>(propValue)),
-                      responseData);
+    setAssertionBytes(static_cast<uint16_t>(std::get<T>(propValue)), &response);
 
     return response;
 }
@@ -184,10 +182,10 @@
 GetSensorResponse readingData(const Info& sensorInfo)
 {
     sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
-    GetSensorResponse response{};
-    auto responseData = reinterpret_cast<GetReadingResponse*>(response.data());
 
-    enableScanning(responseData);
+    GetSensorResponse response{};
+
+    enableScanning(&response);
 
     auto service = ipmi::getService(bus, sensorInfo.sensorInterface,
                                     sensorInfo.sensorPath);
@@ -228,8 +226,7 @@
 
     auto rawData = static_cast<uint8_t>((value - sensorInfo.scaledOffset) /
                                         sensorInfo.coefficientM);
-
-    setReading(rawData, responseData);
+    setReading(rawData, &response);
 
     return response;
 }
