diff --git a/item_updater.hpp b/item_updater.hpp
index 06e65a0..7f9a88b 100755
--- a/item_updater.hpp
+++ b/item_updater.hpp
@@ -15,24 +15,24 @@
 {
 
 using ItemUpdaterInherit = sdbusplus::server::object::object<
-    sdbusplus::xyz::openbmc_project::Common::server::FactoryReset,
-    sdbusplus::org::openbmc::server::Associations,
-    sdbusplus::xyz::openbmc_project::Collection::server::DeleteAll>;
+        sdbusplus::xyz::openbmc_project::Common::server::FactoryReset,
+        sdbusplus::org::openbmc::server::Associations,
+        sdbusplus::xyz::openbmc_project::Collection::server::DeleteAll>;
 namespace MatchRules = sdbusplus::bus::match::rules;
 
 using AssociationList =
         std::vector<std::tuple<std::string, std::string, std::string>>;
 
 /** @class ItemUpdater
- *  @brief Manages the activation of the version items.
+ *  @brief Manages the activation of the host version items.
  */
 class ItemUpdater : public ItemUpdaterInherit
 {
     public:
         /** @brief Constructs ItemUpdater
          *
-         * @param[in] bus    - The Dbus bus object
-         * @param[in] path   - The Dbus path
+         * @param[in] bus    - The D-Bus bus object
+         * @param[in] path   - The D-Bus path
          */
         ItemUpdater(sdbusplus::bus::bus& bus, const std::string& path) :
                     ItemUpdaterInherit(bus, path.c_str()),
@@ -86,8 +86,8 @@
          */
         void deleteAll();
 
-        /** @brief Deletes the active pnor version with highest priority
-                   if the total number of volume exceeds the threshold.
+        /** @brief Deletes the active PNOR version with highest priority
+                   if the total number of volumes exceeds the threshold.
          */
         void freeSpace();
 
@@ -113,29 +113,29 @@
 
     private:
         /** @brief Callback function for Software.Version match.
-         *  @details Creates an Activation dbus object.
+         *  @details Creates an Activation D-Bus object.
          *
          * @param[in]  msg       - Data associated with subscribed signal
          */
         void createActivation(sdbusplus::message::message& msg);
 
         /**
-         * @brief Validates the presence of SquashFS iamge in the image dir.
+         * @brief Validates the presence of SquashFS image in the image dir.
          *
-         * @param[in]  filePath - The path to the SquashfFS image.
+         * @param[in]  filePath - The path to the SquashFS image.
          * @param[out] result    - 0 --> if validation was successful
          *                       - -1--> Otherwise
          */
         static int validateSquashFSImage(const std::string& filePath);
 
-        /** @brief Persistent sdbusplus DBus bus connection. */
+        /** @brief Persistent sdbusplus D-Bus bus connection. */
         sdbusplus::bus::bus& bus;
 
-        /** @brief Persistent map of Activation dbus objects and their
+        /** @brief Persistent map of Activation D-Bus objects and their
           * version id */
         std::map<std::string, std::unique_ptr<Activation>> activations;
 
-        /** @brief Persistent map of Version dbus objects and their
+        /** @brief Persistent map of Version D-Bus objects and their
           * version id */
         std::map<std::string, std::unique_ptr<Version>> versions;
 
@@ -146,14 +146,14 @@
         AssociationList assocs = {};
 
         /** @brief Clears read only PNOR partition for
-         *  given Activation dbus object
+         *  given Activation D-Bus object
          *
          * @param[in]  versionId - The id of the ro partition to remove.
          */
         void removeReadOnlyPartition(std::string versionId);
 
         /** @brief Clears read write PNOR partition for
-         *  given Activation dbus object
+         *  given Activation D-Bus object
          *
          *  @param[in]  versionId - The id of the rw partition to remove.
          */
@@ -163,7 +163,7 @@
         void removePreservedPartition();
 
         /** @brief Host factory reset - clears PNOR partitions for each
-          * Activation dbus object */
+          * Activation D-Bus object */
         void reset() override;
 
         /** @brief Check whether the provided image id is the functional one
