diff --git a/ipmisensor.cpp b/ipmisensor.cpp
index 9e88987..5a629a8 100644
--- a/ipmisensor.cpp
+++ b/ipmisensor.cpp
@@ -249,12 +249,12 @@
     {0xCA, 0x01, set_sensor_dbus_state_simple, "setValue", "Enabled", ""},
     {0xFF, 0xFF, NULL, "", "", ""}};
 
-void reportSensorEventAssert(sensorRES_t* pRec, int index)
+void reportSensorEventAssert(const sensorRES_t* pRec, int index)
 {
     lookup_t* pTable = &g_ipmidbuslookup[index];
     (*pTable->func)(pRec, pTable, pTable->assertion);
 }
-void reportSensorEventDeassert(sensorRES_t* pRec, int index)
+void reportSensorEventDeassert(const sensorRES_t* pRec, int index)
 {
     lookup_t* pTable = &g_ipmidbuslookup[index];
     (*pTable->func)(pRec, pTable, pTable->deassertion);
@@ -305,7 +305,7 @@
 int updateSensorRecordFromSSRAESC(const void* record)
 {
 
-    sensorRES_t* pRec = (sensorRES_t*)record;
+    auto pRec = static_cast<const sensorRES_t*>(record);
     uint8_t stype;
     int index, i = 0;
 
diff --git a/sensorhandler.cpp b/sensorhandler.cpp
index eafb5d0..bb06b94 100644
--- a/sensorhandler.cpp
+++ b/sensorhandler.cpp
@@ -299,7 +299,7 @@
                                     ipmi_data_len_t data_len,
                                     ipmi_context_t context)
 {
-    sensor_data_t* reqptr = (sensor_data_t*)request;
+    auto reqptr = static_cast<sensor_data_t*>(request);
     ipmi_ret_t rc = IPMI_CC_OK;
 
     printf("IPMI GET_SENSOR_TYPE [0x%02X]\n", reqptr->sennum);
@@ -373,7 +373,7 @@
                                ipmi_request_t request, ipmi_response_t response,
                                ipmi_data_len_t data_len, ipmi_context_t context)
 {
-    sensor_data_t* reqptr = (sensor_data_t*)request;
+    auto reqptr = static_cast<sensor_data_t*>(request);
 
     log<level::DEBUG>("IPMI SET_SENSOR",
                       entry("SENSOR_NUM=0x%02x", reqptr->sennum));
@@ -401,8 +401,8 @@
                                        ipmi_data_len_t data_len,
                                        ipmi_context_t context)
 {
-    sensor_data_t* reqptr = (sensor_data_t*)request;
-    sensorreadingresp_t* resp = (sensorreadingresp_t*)response;
+    auto reqptr = static_cast<sensor_data_t*>(request);
+    auto resp = static_cast<sensorreadingresp_t*>(response);
     ipmi::sensor::GetSensorResponse getResponse{};
     static constexpr auto scanningEnabledBit = 6;
 
diff --git a/storageaddsel.cpp b/storageaddsel.cpp
index 8a0dce5..41f813c 100644
--- a/storageaddsel.cpp
+++ b/storageaddsel.cpp
@@ -151,10 +151,9 @@
 
 int create_esel_association(const uint8_t* buffer, std::string& inventoryPath)
 {
-    ipmi_add_sel_request_t* p;
     uint8_t sensor;
 
-    p = (ipmi_add_sel_request_t*)buffer;
+    auto p = reinterpret_cast<const ipmi_add_sel_request_t*>(buffer);
 
     sensor = p->sensornumber;
 
@@ -179,12 +178,10 @@
 int create_esel_description(const uint8_t* buffer, Entry::Level level,
                             char** message)
 {
-
-    ipmi_add_sel_request_t* p;
     char* m;
     int r;
 
-    p = (ipmi_add_sel_request_t*)buffer;
+    auto p = reinterpret_cast<const ipmi_add_sel_request_t*>(buffer);
 
     find_sensor_type_string(p->sensornumber, &m);
 
