diff --git a/vpd-manager/include/worker.hpp b/vpd-manager/include/worker.hpp
index 305045e..b560162 100644
--- a/vpd-manager/include/worker.hpp
+++ b/vpd-manager/include/worker.hpp
@@ -55,17 +55,6 @@
      */
     ~Worker() = default;
 
-#ifdef IBM_SYSTEM
-    /**
-     * @brief API to perform initial setup before manager claims Bus name.
-     *
-     * Before BUS name for VPD-Manager is claimed, fitconfig whould be set for
-     * corret device tree, inventory JSON w.r.t system should be linked and
-     * system VPD should be on DBus.
-     */
-    void performInitialSetup();
-#endif
-
     /**
      * @brief An API to check if system VPD is already published.
      *
@@ -181,6 +170,25 @@
      */
     void performVpdRecollection();
 
+    /**
+     * @brief API to prime inventory Objects.
+     *
+     * @param[in] i_vpdFilePath - EEPROM file path.
+     * @return true if the prime inventory is success, false otherwise.
+     */
+    bool primeInventory(const std::string& i_vpdFilePath);
+
+    /**
+     * @brief An API to set appropriate device tree and JSON.
+     *
+     * This API based on system chooses corresponding device tree and JSON.
+     * If device tree change is required, it updates the "fitconfig" and reboots
+     * the system. Else it is NOOP.
+     *
+     * @throw std::exception
+     */
+    void setDeviceTreeAndJson();
+
   private:
     /**
      * @brief An API to parse and publish a FRU VPD over D-Bus.
@@ -196,17 +204,6 @@
         const std::string& i_vpdFilePath);
 
     /**
-     * @brief An API to set appropriate device tree and JSON.
-     *
-     * This API based on system chooses corresponding device tree and JSON.
-     * If device tree change is required, it updates the "fitconfig" and reboots
-     * the system. Else it is NOOP.
-     *
-     * @throw std::exception
-     */
-    void setDeviceTreeAndJson();
-
-    /**
      * @brief API to select system specific JSON.
      *
      * The API based on the IM value of VPD, will select appropriate JSON for
@@ -362,14 +359,6 @@
     bool isCPUIOGoodOnly(const std::string& pgKeyword);
 
     /**
-     * @brief API to prime inventory Objects.
-     *
-     * @param[in] i_vpdFilePath - EEPROM file path.
-     * @return true if the prime inventory is success, false otherwise.
-     */
-    bool primeInventory(const std::string& i_vpdFilePath);
-
-    /**
      * @brief API to process preAction(base_action) defined in config JSON.
      *
      * @note sequence of tags under any given flag of preAction is EXTREMELY
@@ -441,16 +430,6 @@
         const std::optional<types::VPDMapVariant> i_parsedVpd = std::nullopt);
 
     /**
-     * @brief Function to enable and bring MUX out of idle state.
-     *
-     * This finds all the MUX defined in the system json and enables them by
-     * setting the holdidle parameter to 0.
-     *
-     * @throw std::runtime_error
-     */
-    void enableMuxChips();
-
-    /**
      * @brief An API to perform backup or restore of VPD.
      *
      * @param[in,out] io_srcVpdMap - Source VPD map.
@@ -500,14 +479,6 @@
         const types::VPDMapVariant& i_parsedVpdMap);
 
     /**
-     * @brief API to prime system blueprint.
-     *
-     * The API will traverse the system config JSON and will prime all the FRU
-     * paths which qualifies for priming.
-     */
-    void primeSystemBlueprint();
-
-    /**
      * @brief API to set symbolic link for system config JSON.
      *
      * Once correct device tree is set, symbolic link to the correct sytsem
