diff --git a/ubi/item_updater_ubi.cpp b/ubi/item_updater_ubi.cpp
index cf8ffe0..83a514d 100644
--- a/ubi/item_updater_ubi.cpp
+++ b/ubi/item_updater_ubi.cpp
@@ -189,7 +189,7 @@
     }
 }
 
-void ItemUpdaterUbi::removeReadOnlyPartition(std::string versionId)
+void ItemUpdaterUbi::removeReadOnlyPartition(const std::string& versionId)
 {
     auto serviceFile = "obmc-flash-bios-ubiumount-ro@" + versionId + ".service";
 
@@ -200,7 +200,7 @@
     bus.call_noreply(method);
 }
 
-void ItemUpdaterUbi::removeReadWritePartition(std::string versionId)
+void ItemUpdaterUbi::removeReadWritePartition(const std::string& versionId)
 {
     auto serviceFile = "obmc-flash-bios-ubiumount-rw@" + versionId + ".service";
 
diff --git a/ubi/item_updater_ubi.hpp b/ubi/item_updater_ubi.hpp
index fb6a6ca..183daac 100644
--- a/ubi/item_updater_ubi.hpp
+++ b/ubi/item_updater_ubi.hpp
@@ -96,14 +96,14 @@
      *
      * @param[in]  versionId - The id of the ro partition to remove.
      */
-    void removeReadOnlyPartition(std::string versionId);
+    void removeReadOnlyPartition(const std::string& versionId);
 
     /** @brief Clears read write PNOR partition for
      *  given Activation D-Bus object
      *
      *  @param[in]  versionId - The id of the rw partition to remove.
      */
-    void removeReadWritePartition(std::string versionId);
+    void removeReadWritePartition(const std::string& versionId);
 
     /** @brief Clears preserved PNOR partition */
     void removePreservedPartition();
diff --git a/ubi/serialize.cpp b/ubi/serialize.cpp
index 7250a00..a40925a 100644
--- a/ubi/serialize.cpp
+++ b/ubi/serialize.cpp
@@ -16,7 +16,7 @@
 
 namespace fs = std::experimental::filesystem;
 
-void storeToFile(std::string versionId, uint8_t priority)
+void storeToFile(const std::string& versionId, uint8_t priority)
 {
     auto bus = sdbusplus::bus::new_default();
 
@@ -49,7 +49,7 @@
     bus.call_noreply(method);
 }
 
-bool restoreFromFile(std::string versionId, uint8_t& priority)
+bool restoreFromFile(const std::string& versionId, uint8_t& priority)
 {
     auto varPath = PERSIST_DIR + versionId;
     if (fs::exists(varPath))
@@ -113,7 +113,7 @@
     return false;
 }
 
-void removeFile(std::string versionId)
+void removeFile(const std::string& versionId)
 {
     auto bus = sdbusplus::bus::new_default();
 
diff --git a/ubi/serialize.hpp b/ubi/serialize.hpp
index e8860f3..e5fefad 100644
--- a/ubi/serialize.hpp
+++ b/ubi/serialize.hpp
@@ -13,19 +13,19 @@
  *  @param[in] versionId - The version for which to store information.
  *  @param[in] priority - RedundancyPriority value for that version.
  */
-void storeToFile(std::string versionId, uint8_t priority);
+void storeToFile(const std::string& versionId, uint8_t priority);
 
 /** @brief Serialization function - restores activation information from file
  *  @param[in] versionId - The version for which to retrieve information.
  *  @param[in] priority - RedundancyPriority pointer for that version.
  *  @return true if restore was successful, false if not
  */
-bool restoreFromFile(std::string versionId, uint8_t& priority);
+bool restoreFromFile(const std::string& versionId, uint8_t& priority);
 
 /** @brief Removes the serial file for a given version.
  *  @param[in] versionId - The version for which to remove a file, if it exists.
  */
-void removeFile(std::string versionId);
+void removeFile(const std::string& versionId);
 
 } // namespace updater
 } // namespace software
diff --git a/ubi/watch.hpp b/ubi/watch.hpp
index a04967e..4d195a3 100644
--- a/ubi/watch.hpp
+++ b/ubi/watch.hpp
@@ -18,7 +18,7 @@
 {
     void operator()(sd_event_source* eventSource) const
     {
-        eventSource = sd_event_source_unref(eventSource);
+        sd_event_source_unref(eventSource);
     }
 };
 using EventSourcePtr = std::unique_ptr<sd_event_source, EventSourceDeleter>;
@@ -40,7 +40,7 @@
      *
      *  @param[in] fd - File descriptor
      */
-    CustomFd(int fd) : fd(fd)
+    explicit CustomFd(int fd) : fd(fd)
     {
     }
 
