diff --git a/src/entity_manager.hpp b/src/entity_manager.hpp
index a4c7511..0fbef79 100644
--- a/src/entity_manager.hpp
+++ b/src/entity_manager.hpp
@@ -72,7 +72,7 @@
     void updateSystemConfiguration(const nlohmann::json& recordRef,
                                    const std::string& probeName,
                                    FoundDevices& foundDevices);
-    void run(void);
+    void run();
     virtual ~PerformScan();
     nlohmann::json& _systemConfiguration;
     nlohmann::json& _missingConfigurations;
diff --git a/src/fru_device.cpp b/src/fru_device.cpp
index 138568c..134d355 100644
--- a/src/fru_device.cpp
+++ b/src/fru_device.cpp
@@ -728,7 +728,7 @@
     FindDevicesWithCallback(const std::vector<fs::path>& i2cBuses,
                             BusMap& busmap, const bool& powerIsOn,
                             sdbusplus::asio::object_server& objServer,
-                            std::function<void(void)>&& callback) :
+                            std::function<void()>&& callback) :
         _i2cBuses(i2cBuses),
         _busMap(busmap), _powerIsOn(powerIsOn), _objServer(objServer),
         _callback(std::move(callback))
@@ -746,7 +746,7 @@
     BusMap& _busMap;
     const bool& _powerIsOn;
     sdbusplus::asio::object_server& _objServer;
-    std::function<void(void)> _callback;
+    std::function<void()> _callback;
 };
 
 void addFruObjectToDbus(
diff --git a/src/fru_utils.cpp b/src/fru_utils.cpp
index ee04ecb..e18d55b 100644
--- a/src/fru_utils.cpp
+++ b/src/fru_utils.cpp
@@ -38,7 +38,7 @@
 static constexpr bool debug = false;
 constexpr size_t fruVersion = 1; // Current FRU spec version number is 1
 
-std::tm intelEpoch(void)
+std::tm intelEpoch()
 {
     std::tm val = {};
     val.tm_year = 1996 - 1900;
diff --git a/src/fru_utils.hpp b/src/fru_utils.hpp
index c2b81cc..d6c2f6e 100644
--- a/src/fru_utils.hpp
+++ b/src/fru_utils.hpp
@@ -101,7 +101,7 @@
     return fruAreaNames[static_cast<unsigned int>(area)];
 }
 
-std::tm intelEpoch(void);
+std::tm intelEpoch();
 
 char sixBitToChar(uint8_t val);
 
diff --git a/src/overlay.hpp b/src/overlay.hpp
index 8e818c2..3bc6eb7 100644
--- a/src/overlay.hpp
+++ b/src/overlay.hpp
@@ -18,5 +18,5 @@
 #pragma once
 #include <nlohmann/json.hpp>
 
-void unloadAllOverlays(void);
+void unloadAllOverlays();
 bool loadOverlays(const nlohmann::json& systemConfiguration);
diff --git a/src/utils.cpp b/src/utils.cpp
index c0b3d20..bac2a4b 100644
--- a/src/utils.cpp
+++ b/src/utils.cpp
@@ -139,7 +139,7 @@
     return validator.validate(schema, targetAdapter, nullptr);
 }
 
-bool isPowerOn(void)
+bool isPowerOn()
 {
     if (!powerMatch)
     {
diff --git a/src/utils.hpp b/src/utils.hpp
index 746bc25..dec8508 100644
--- a/src/utils.hpp
+++ b/src/utils.hpp
@@ -68,7 +68,7 @@
 bool validateJson(const nlohmann::json& schemaFile,
                   const nlohmann::json& input);
 
-bool isPowerOn(void);
+bool isPowerOn();
 void setupPowerMatch(const std::shared_ptr<sdbusplus::asio::connection>& conn);
 struct DBusInternalError final : public sdbusplus::exception_t
 {
@@ -92,7 +92,7 @@
     }
 };
 
-inline bool fwVersionIsSame(void)
+inline bool fwVersionIsSame()
 {
     std::ifstream version(versionFile);
     if (!version.good())
