diff --git a/docs/oem-extension-numbering.md b/docs/oem-extension-numbering.md
index f6ff569..d87e0aa 100644
--- a/docs/oem-extension-numbering.md
+++ b/docs/oem-extension-numbering.md
@@ -79,7 +79,7 @@
 ### I2C Device Access (Command 2)
 
 The next subsections describe command and response messages supporting
-the I2C Device Access extension OpenBMC OEM extenstion (command code 2).
+the I2C Device Access extension OpenBMC OEM extension (command code 2).
 
 #### I2C Request Message - Overall
 
diff --git a/ipmisensor.cpp b/ipmisensor.cpp
index 2e987d0..1eecb94 100644
--- a/ipmisensor.cpp
+++ b/ipmisensor.cpp
@@ -122,7 +122,7 @@
 
 		case 0x00 : snprintf(p, sizeof(valuestring), "POST Error, %s", event_data_lookup(g_fwprogress00h, pRec->event_data2));
 					break;
-		case 0x01 : /* Using g_fwprogress02h for 0x01 because thats what the ipmi spec says to do */
+		case 0x01 : /* Using g_fwprogress02h for 0x01 because that's what the ipmi spec says to do */
 					snprintf(p, sizeof(valuestring), "FW Hang, %s", event_data_lookup(g_fwprogress02h, pRec->event_data2));
 					break;
 		case 0x02 : snprintf(p, sizeof(valuestring), "FW Progress, %s", event_data_lookup(g_fwprogress02h, pRec->event_data2));
diff --git a/sensordatahandler.cpp b/sensordatahandler.cpp
index 4d87341..20006dc 100644
--- a/sensordatahandler.cpp
+++ b/sensordatahandler.cpp
@@ -68,7 +68,7 @@
     const auto& iter = mapperResponse.find(path);
     if (iter == mapperResponse.end())
     {
-        log<level::ERR>("Coudn't find d-bus path",
+        log<level::ERR>("Couldn't find D-Bus path",
                         entry("PATH=%s", path),
                         entry("INTERFACE=%s", interface));
         elog<InternalFailure>();
diff --git a/transporthandler.cpp b/transporthandler.cpp
index b33dc7d..bafeb16 100644
--- a/transporthandler.cpp
+++ b/transporthandler.cpp
@@ -93,8 +93,8 @@
 
                         ipaddress = properties["Address"].get<std::string>();
                     }
-                    // ignore the exception, as it is a valid condtion that
-                    // system is not confiured with any ip.
+                    // ignore the exception, as it is a valid condition that
+                    // the system is not configured with any IP.
                     catch (InternalFailure& e)
                     {
                         // nothing to do.
@@ -212,8 +212,8 @@
                         mask = ipmi::network::MASK_32_BIT;
                         mask = htonl(mask << (ipmi::network::BITS_32 - prefix));
                     }
-                    // ignore the exception, as it is a valid condtion that
-                    // system is not confiured with any ip.
+                    // ignore the exception, as it is a valid condition that
+                    // the system is not configured with any IP.
                     catch (InternalFailure& e)
                     {
                         // nothing to do
@@ -251,8 +251,8 @@
                         gateway = systemProperties["DefaultGateway"].get<
                             std::string>();
                     }
-                    // ignore the exception, as it is a valid condtion that
-                    // system is not confiured with any ip.
+                    // ignore the exception, as it is a valid condition that
+                    // the system is not configured with any IP.
                     catch (InternalFailure& e)
                     {
                         // nothing to do
@@ -329,8 +329,8 @@
                             vlanID |= htole16(ipmi::network::VLAN_ENABLE_MASK);
                         }
                     }
-                    // ignore the exception, as it is a valid condtion that
-                    // system is not confiured with any ip.
+                    // ignore the exception, as it is a valid condition that
+                    // the system is not configured with any IP.
                     catch (InternalFailure& e)
                     {
                         // nothing to do
diff --git a/utils.cpp b/utils.cpp
index 31c219c..4f59f6c 100644
--- a/utils.cpp
+++ b/utils.cpp
@@ -496,7 +496,7 @@
 
     if (reply.is_method_error())
     {
-        log<level::ERR>("Failed to excute method",
+        log<level::ERR>("Failed to execute method",
                         entry("METHOD=%s", "IP"),
                         entry("PATH=%s", objPath.c_str()));
         elog<InternalFailure>();
@@ -522,7 +522,7 @@
 
     if (reply.is_method_error())
     {
-        log<level::ERR>("Failed to excute method",
+        log<level::ERR>("Failed to execute method",
                         entry("METHOD=%s", "VLAN"),
                         entry("PATH=%s", objPath.c_str()));
         elog<InternalFailure>();
