diff --git a/include/compat/msvc/windirent.h b/include/compat/msvc/windirent.h
index ee9f552..a87d0b9 100644
--- a/include/compat/msvc/windirent.h
+++ b/include/compat/msvc/windirent.h
@@ -145,7 +145,7 @@
 #define S_IXOTH 0
 #endif
 
-/* Maximum length of file name */
+/* Maximum length of filename */
 #if !defined(PATH_MAX)
 #define PATH_MAX MAX_PATH
 #endif
@@ -171,7 +171,7 @@
 #define DTTOIF(type) (type)
 
 /*
- * File type macros.  Note that block devices, sockets and links cannot be
+ * File type macros.  Note that block devices, sockets and links are unable to be
  * distinguished on Windows and the macros S_ISBLK, S_ISSOCK and S_ISLNK are
  * only defined for compatibility.  These macros should always return false
  * on Windows.
@@ -223,7 +223,7 @@
     /* File type */
     int d_type;
 
-    /* File name */
+    /* Filename */
     wchar_t d_name[PATH_MAX];
 };
 typedef struct _wdirent _wdirent;
@@ -275,7 +275,7 @@
     /* File type */
     int d_type;
 
-    /* File name */
+    /* Filename */
     char d_name[PATH_MAX];
 };
 typedef struct dirent dirent;
@@ -385,24 +385,24 @@
                     /* Directory stream opened successfully */
                     error = 0;
                 } else {
-                    /* Cannot retrieve first entry */
+                    /* Unable to retrieve first entry */
                     error = 1;
                     dirent_set_errno(ENOENT);
                 }
 
             } else {
-                /* Cannot retrieve full path name */
+                /* Unable to retrieve full path name */
                 dirent_set_errno(ENOENT);
                 error = 1;
             }
 
         } else {
-            /* Cannot allocate memory for search pattern */
+            /* Unable to allocate memory for search pattern */
             error = 1;
         }
 
     } else {
-        /* Cannot allocate _WDIR structure */
+        /* Unable to allocate _WDIR structure */
         error = 1;
     }
 
@@ -437,8 +437,8 @@
         entp = &dirp->ent;
 
         /*
-         * Copy file name as wide-character string.  If the file name is too
-         * long to fit in to the destination buffer, then truncate file name
+         * Copy filename as wide-character string.  If the filename is too
+         * long to fit in to the destination buffer, then truncate filename
          * to PATH_MAX characters and zero-terminate the buffer.
          */
         n = 0;
@@ -448,7 +448,7 @@
         }
         dirp->ent.d_name[n] = 0;
 
-        /* Length of file name excluding zero terminator */
+        /* Length of filename excluding zero terminator */
         entp->d_namlen = n;
 
         /* File type */
@@ -509,7 +509,7 @@
 
 /*
  * Rewind directory stream such that _wreaddir() returns the very first
- * file name again.
+ * filename again.
  */
 static void
 _wrewinddir(_WDIR* dirp)
@@ -619,7 +619,7 @@
 
         } else {
             /*
-             * Cannot convert file name to wide-character string.  This
+             * Unable to convert filename to wide-character string.  This
              * occurs if the string contains invalid multi-byte sequences or
              * the output buffer is too small to contain the resulting
              * string.
@@ -628,7 +628,7 @@
         }
 
     } else {
-        /* Cannot allocate DIR structure */
+        /* Unable to allocate DIR structure */
         error = 1;
     }
 
@@ -644,10 +644,10 @@
 /*
  * Read next directory entry.
  *
- * When working with text consoles, please note that file names returned by
+ * When working with text consoles, please note that filenames returned by
  * readdir() are represented in the default ANSI code page while any output to
  * console is typically formatted on another code page.  Thus, non-ASCII
- * characters in file names will not usually display correctly on console.  The
+ * characters in filenames will not usually display correctly on console.  The
  * problem can be fixed in two ways: (1) change the character set of console
  * to 1252 using chcp utility and use Lucida Console font, or (2) use
  * _cprintf function when writing to console.  The _cprinf() will re-encode
@@ -666,16 +666,16 @@
         size_t n;
         int error;
 
-        /* Attempt to convert file name to multi-byte string */
+        /* Attempt to convert filename to multi-byte string */
         error = dirent_wcstombs_s(&n, dirp->ent.d_name, PATH_MAX, datap->cFileName, PATH_MAX);
 
         /*
-         * If the file name cannot be represented by a multi-byte string,
-         * then attempt to use old 8+3 file name.  This allows traditional
-         * Unix-code to access some file names despite of unicode
-         * characters, although file names may seem unfamiliar to the user.
+         * If the filename is unable to be represented by a multi-byte string,
+         * then attempt to use old 8.3 filename.  This allows traditional
+         * Unix-code to access some filenames despite of unicode
+         * characters, although filenames may seem unfamiliar to the user.
          *
-         * Be ware that the code below cannot come up with a short file
+         * Beware that the code below is unable to come up with a short file
          * name unless the file system provides one.  At least
          * VirtualBox shared folders fail to do this.
          */
@@ -693,7 +693,7 @@
             /* Initialize directory entry for return */
             entp = &dirp->ent;
 
-            /* Length of file name excluding zero terminator */
+            /* Length of filename excluding zero terminator */
             entp->d_namlen = n - 1;
 
             /* File attributes */
@@ -712,9 +712,9 @@
 
         } else {
             /*
-             * Cannot convert file name to multi-byte string so construct
+             * Unable to convert filename to multi-byte string so construct
              * an errornous directory entry and return that.  Note that
-             * we cannot return NULL as that would stop the processing
+             * we are unable to return NULL as that would stop the processing
              * of directory entries completely.
              */
             entp = &dirp->ent;
@@ -804,7 +804,7 @@
         error = 0;
 
     } else {
-        /* Could not convert string */
+        /* Unable to convert string */
         error = 1;
     }
 
@@ -853,7 +853,7 @@
         error = 0;
 
     } else {
-        /* Cannot convert string */
+        /* Unable to convert string */
         error = 1;
     }
 
diff --git a/include/connectionmanager.h b/include/connectionmanager.h
index 6cd3b56..e4ea212 100644
--- a/include/connectionmanager.h
+++ b/include/connectionmanager.h
@@ -190,7 +190,7 @@
     std::size_t activeSockets() const;
 
     /**
-     * Log informations for all sockets
+     * Log information for all sockets
      */
     void monitor() const;
 
diff --git a/include/ice_transport.h b/include/ice_transport.h
index a13ebdd..c48a762 100644
--- a/include/ice_transport.h
+++ b/include/ice_transport.h
@@ -101,7 +101,7 @@
      * to find the right candidate pair.
      * This function doesn't block, the callback on_negodone_cb will be called
      * with the negotiation result when operation is really done.
-     * Return false if negotiation cannot be started else true.
+     * Return false if negotiation is unable to be started else true.
      */
     bool startIce(const Attribute& rem_attrs, std::vector<IceCandidate>&& rem_candidates);
     bool startIce(const SDP& sdp);
diff --git a/include/multiplexed_socket.h b/include/multiplexed_socket.h
index 2079df5..480932c 100644
--- a/include/multiplexed_socket.h
+++ b/include/multiplexed_socket.h
@@ -135,7 +135,7 @@
     void onShutdown(OnShutdownCb&& cb);
 
     /**
-     * Get informations from socket (channels opened)
+     * Get information from socket (channels opened)
      */
     void monitor() const;
 
diff --git a/include/pj_init_lock.h b/include/pj_init_lock.h
index c521a8a..b1b675c 100644
--- a/include/pj_init_lock.h
+++ b/include/pj_init_lock.h
@@ -29,7 +29,7 @@
 // - The first call to pj_init actually initializes the library; subsequent calls do nothing.
 // - All calls to pj_shutdown do nothing, except the last one which actually performs the shutdown.
 // Unfortunately, the way this logic is implemented in PJSIP is not thread-safe, so we're
-// responsible for making sure that these functions can't be called by two threads at the same time.
+// responsible for making sure that these functions are unable to be called by two threads at the same time.
 class PjInitLock
 {
 private:
diff --git a/include/string_utils.h b/include/string_utils.h
index 587cfb6..92e54e8 100644
--- a/include/string_utils.h
+++ b/include/string_utils.h
@@ -71,9 +71,9 @@
     if (ec == std::errc())
         return result;
     if (ec == std::errc::invalid_argument)
-        throw std::invalid_argument("Can't parse integer: invalid_argument");
+        throw std::invalid_argument("Unable to parse integer: invalid_argument");
     else if (ec == std::errc::result_out_of_range)
-        throw std::out_of_range("Can't parse integer: out of range");
+        throw std::out_of_range("Unable to parse integer: out of range");
     throw std::system_error(std::make_error_code(ec));
 }
 
