diff --git a/static/Makefile.am.include b/static/Makefile.am.include
index 73f96e3..827e2fd 100644
--- a/static/Makefile.am.include
+++ b/static/Makefile.am.include
@@ -1,2 +1,2 @@
 openpower_update_manager_SOURCES += \
-	%reldir%/item_updater.cpp
+	%reldir%/item_updater_static.cpp
diff --git a/static/item_updater_static.cpp b/static/item_updater_static.cpp
new file mode 100644
index 0000000..95912a5
--- /dev/null
+++ b/static/item_updater_static.cpp
@@ -0,0 +1,69 @@
+#include "config.h"
+
+#include "item_updater_static.hpp"
+
+namespace openpower
+{
+namespace software
+{
+namespace updater
+{
+
+std::unique_ptr<Activation> ItemUpdaterStatic::createActivationObject(
+    const std::string& path, const std::string& versionId,
+    const std::string& extVersion,
+    sdbusplus::xyz::openbmc_project::Software::server::Activation::Activations
+        activationStatus,
+    AssociationList& assocs)
+{
+    return {};
+}
+
+std::unique_ptr<Version> ItemUpdaterStatic::createVersionObject(
+    const std::string& objPath, const std::string& versionId,
+    const std::string& versionString,
+    sdbusplus::xyz::openbmc_project::Software::server::Version::VersionPurpose
+        versionPurpose,
+    const std::string& filePath)
+{
+    return {};
+}
+
+bool ItemUpdaterStatic::validateImage(const std::string& path)
+{
+    return true;
+}
+
+void ItemUpdaterStatic::processPNORImage()
+{
+}
+
+void ItemUpdaterStatic::reset()
+{
+}
+
+bool ItemUpdaterStatic::isVersionFunctional(const std::string& versionId)
+{
+    return true;
+}
+
+void ItemUpdaterStatic::freePriority(uint8_t value,
+                                     const std::string& versionId)
+{
+}
+
+void ItemUpdaterStatic::deleteAll()
+{
+}
+
+void ItemUpdaterStatic::freeSpace()
+{
+}
+
+void GardReset::reset()
+{
+}
+
+} // namespace updater
+} // namespace software
+} // namespace openpower
diff --git a/static/item_updater_static.hpp b/static/item_updater_static.hpp
new file mode 100644
index 0000000..dd7245f
--- /dev/null
+++ b/static/item_updater_static.hpp
@@ -0,0 +1,68 @@
+#pragma once
+
+#include "item_updater.hpp"
+
+namespace openpower
+{
+namespace software
+{
+namespace updater
+{
+
+/** @class ItemUpdaterStatic
+ *  @brief Manages the activation of the host version items for static layout
+ */
+class ItemUpdaterStatic : public ItemUpdater
+{
+  public:
+    ItemUpdaterStatic(sdbusplus::bus::bus& bus, const std::string& path) :
+        ItemUpdater(bus, path)
+    {
+        processPNORImage();
+        gardReset = std::make_unique<GardReset>(bus, GARD_PATH);
+        volatileEnable = std::make_unique<ObjectEnable>(bus, volatilePath);
+
+        // Emit deferred signal.
+        emit_object_added();
+    }
+    virtual ~ItemUpdaterStatic() = default;
+
+    void freePriority(uint8_t value, const std::string& versionId) override;
+
+    void processPNORImage() override;
+
+    void deleteAll() override;
+
+    void freeSpace() override;
+
+    bool isVersionFunctional(const std::string& versionId) override;
+
+  private:
+    /** @brief Create Activation object */
+    std::unique_ptr<Activation> createActivationObject(
+        const std::string& path, const std::string& versionId,
+        const std::string& extVersion,
+        sdbusplus::xyz::openbmc_project::Software::server::Activation::
+            Activations activationStatus,
+        AssociationList& assocs) override;
+
+    /** @brief Create Version object */
+    std::unique_ptr<Version>
+        createVersionObject(const std::string& objPath,
+                            const std::string& versionId,
+                            const std::string& versionString,
+                            sdbusplus::xyz::openbmc_project::Software::server::
+                                Version::VersionPurpose versionPurpose,
+                            const std::string& filePath) override;
+
+    /** @brief Validate if image is valid or not */
+    bool validateImage(const std::string& path);
+
+    /** @brief Host factory reset - clears PNOR partitions for each
+     * Activation D-Bus object */
+    void reset() override;
+};
+
+} // namespace updater
+} // namespace software
+} // namespace openpower
