diff --git a/item_updater.cpp b/item_updater.cpp
index cd12688..9c94b19 100644
--- a/item_updater.cpp
+++ b/item_updater.cpp
@@ -24,12 +24,18 @@
 
 void ItemUpdater::createActivation(sdbusplus::message::message& msg)
 {
-    sdbusplus::message::object_path objPath;
-    auto purpose = server::Version::VersionPurpose::Unknown;
+
+    using SVersion = server::Version;
+    using VersionPurpose = SVersion::VersionPurpose;
+    namespace mesg = sdbusplus::message;
+    namespace variant_ns = mesg::variant_ns;
+
+    mesg::object_path objPath;
+    auto purpose = VersionPurpose::Unknown;
     std::string version;
     std::map<std::string,
              std::map<std::string,
-                      sdbusplus::message::variant<std::string>>> interfaces;
+                      mesg::variant<std::string>>> interfaces;
     msg.read(objPath, interfaces);
     std::string path(std::move(objPath));
     std::string filePath;
@@ -42,15 +48,17 @@
             {
                 if (property.first == "Purpose")
                 {
-                    std::string str = sdbusplus::message::variant_ns::
-                        get<std::string>(property.second);
-                    purpose = server::Version::
-                        convertVersionPurposeFromString(str);
+                    auto value = SVersion::convertVersionPurposeFromString(
+                        variant_ns::get<std::string>(property.second));
+                    if (value == VersionPurpose::BMC ||
+                        value == VersionPurpose::System)
+                    {
+                        purpose = value;
+                    }
                 }
                 else if (property.first == "Version")
                 {
-                    version = sdbusplus::message::variant_ns::
-                        get<std::string>(property.second);
+                    version = variant_ns::get<std::string>(property.second);
                 }
             }
         }
@@ -60,16 +68,14 @@
             {
                 if (property.first == "Path")
                 {
-                    filePath = sdbusplus::message::variant_ns::get<
-                            std::string>(property.second);
+                    filePath = variant_ns::get<std::string>(property.second);
                 }
             }
         }
     }
     if (version.empty() ||
         filePath.empty() ||
-        (purpose != server::Version::VersionPurpose::BMC &&
-        purpose != server::Version::VersionPurpose::System))
+        purpose == VersionPurpose::Unknown)
     {
         return;
     }
diff --git a/version.hpp b/version.hpp
index eca6670..0144873 100755
--- a/version.hpp
+++ b/version.hpp
@@ -42,7 +42,6 @@
             purpose(versionPurpose);
             version(versionId);
             path(filePath);
-
             // Emit deferred signal.
             emit_object_added();
         }
