diff --git a/src/bridgingcommands.cpp b/src/bridgingcommands.cpp
index 465659f..3fa8635 100644
--- a/src/bridgingcommands.cpp
+++ b/src/bridgingcommands.cpp
@@ -315,7 +315,7 @@
         return ipmi::ccUnspecifiedError;
     }
 
-    std::vector<uint8_t> dataReceived(0);
+    std::vector<uint8_t> dataReceived{};
     int status = -1;
     uint8_t netFn = 0, lun = 0, cmd = 0, cc = 0;
 
diff --git a/src/chassiscommands.cpp b/src/chassiscommands.cpp
index 8e5c836..017e46b 100644
--- a/src/chassiscommands.cpp
+++ b/src/chassiscommands.cpp
@@ -426,7 +426,7 @@
               bool,    // last power down caused by a Power overload
               bool,    // last power down caused by a power interlock
               bool,    // last power down caused by power fault
-              bool, // last ‘Power is on’ state was entered via IPMI command
+              bool,    // last ‘Power is on’ state was entered via IPMI command
               uint3_t, // reserved
 
               bool,    // Chassis intrusion active
diff --git a/src/manufacturingcommands.cpp b/src/manufacturingcommands.cpp
index fce6665..59f7880 100644
--- a/src/manufacturingcommands.cpp
+++ b/src/manufacturingcommands.cpp
@@ -1277,7 +1277,7 @@
     constexpr uint8_t targetAddr = 0x38;
     std::string i2cBus = "/dev/i2c-4";
     std::vector<uint8_t> writeData = {0x61, 0x1};
-    std::vector<uint8_t> readBuf(0);
+    std::vector<uint8_t> readBuf{};
 
     ipmi::Cc retI2C =
         ipmi::i2cWriteRead(i2cBus, targetAddr, writeData, readBuf);
diff --git a/src/oemcommands.cpp b/src/oemcommands.cpp
index ac97fdb..6cbe908 100644
--- a/src/oemcommands.cpp
+++ b/src/oemcommands.cpp
@@ -267,7 +267,7 @@
     // Based on the spec, writing cmdReg to address val on this device, will
     // trigger the write FIFO operation.
     std::vector<uint8_t> writeData = {cmdReg, val};
-    std::vector<uint8_t> readBuf(0);
+    std::vector<uint8_t> readBuf{};
     ipmi::Cc retI2C =
         ipmi::i2cWriteRead(i2cBus, targetAddr, writeData, readBuf);
     if (retI2C)
@@ -868,7 +868,7 @@
         return ipmi::responseUnspecifiedError();
     }
 
-    std::vector<uint8_t> dataReceived(0);
+    std::vector<uint8_t> dataReceived{};
     int status = -1;
     uint8_t resNetFn = 0, resLun = 0, resCmd = 0, cc = 0;
 
diff --git a/src/storagecommands.cpp b/src/storagecommands.cpp
index a1a19f2..4034cff 100644
--- a/src/storagecommands.cpp
+++ b/src/storagecommands.cpp
@@ -360,9 +360,11 @@
         });
 
     // call once to populate
-    boost::asio::spawn(*getIoContext(), [](boost::asio::yield_context yield) {
-        replaceCacheFru(getSdBus(), yield);
-    });
+    boost::asio::spawn(*getIoContext(),
+                       [](boost::asio::yield_context yield) {
+                           replaceCacheFru(getSdBus(), yield);
+                       },
+                       {});
 }
 
 /** @brief implements the read FRU data command
