diff --git a/src/activation.hpp b/src/activation.hpp
index b46105b..7ad03c9 100644
--- a/src/activation.hpp
+++ b/src/activation.hpp
@@ -128,7 +128,7 @@
                Status activationStatus, const AssociationList& assocs,
                AssociationInterface* associationInterface) :
         ActivationInherit(bus, path.c_str(), true),
-        versionId(versionId), bus(bus), path(path),
+        bus(bus), path(path), versionId(versionId),
         systemdSignals(
             bus,
             sdbusRule::type::signal() + sdbusRule::member("JobRemoved") +
@@ -171,8 +171,11 @@
     RequestedActivations
         requestedActivation(RequestedActivations value) override;
 
-    /** @brief Version id */
-    std::string versionId;
+    /** @brief Get the version ID */
+    const std::string& getVersionId() const
+    {
+        return versionId;
+    }
 
   private:
     /** @brief Check if systemd state change is relevant to this object
@@ -226,6 +229,9 @@
     /** @brief Persistent DBus object path */
     std::string path;
 
+    /** @brief Version id */
+    std::string versionId;
+
     /** @brief Used to subscribe to dbus systemd signals */
     sdbusplus::bus::match_t systemdSignals;
 
diff --git a/src/item_updater.cpp b/src/item_updater.cpp
index d9a502f..49b95df 100644
--- a/src/item_updater.cpp
+++ b/src/item_updater.cpp
@@ -123,7 +123,7 @@
     return;
 }
 
-void ItemUpdater::erase(std::string versionId)
+void ItemUpdater::erase(const std::string& versionId)
 {
     auto it = versions.find(versionId);
     if (it == versions.end())
@@ -153,12 +153,6 @@
     }
 }
 
-void ItemUpdater::deleteAll()
-{
-    // TODO: when PSU's running firmware is implemented, delete all versions
-    // that are not the running firmware.
-}
-
 void ItemUpdater::createActiveAssociation(const std::string& path)
 {
     assocs.emplace_back(
@@ -268,7 +262,7 @@
     if (associations.empty())
     {
         // Remove the activation
-        erase(activationPtr->versionId);
+        erase(activationPtr->getVersionId());
     }
     else
     {
diff --git a/src/item_updater.hpp b/src/item_updater.hpp
index c0a64fa..67f6e57 100644
--- a/src/item_updater.hpp
+++ b/src/item_updater.hpp
@@ -25,8 +25,8 @@
 class Version;
 
 using ItemUpdaterInherit = sdbusplus::server::object::object<
-    sdbusplus::xyz::openbmc_project::Association::server::Definitions,
-    sdbusplus::xyz::openbmc_project::Collection::server::DeleteAll>;
+    sdbusplus::xyz::openbmc_project::Association::server::Definitions>;
+
 namespace MatchRules = sdbusplus::bus::match::rules;
 
 /** @class ItemUpdater
@@ -57,12 +57,7 @@
      *
      *  @param[in] versionId - Id of the version to delete
      */
-    void erase(std::string versionId);
-
-    /**
-     * @brief Erases any non-active versions.
-     */
-    void deleteAll();
+    void erase(const std::string& versionId);
 
     /** @brief Creates an active association to the
      *  newly active software image
