diff --git a/include/estoraged.hpp b/include/estoraged.hpp
index 3a18416..d77c7f9 100644
--- a/include/estoraged.hpp
+++ b/include/estoraged.hpp
@@ -8,7 +8,7 @@
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/exception.hpp>
 #include <sdbusplus/server/object.hpp>
-#include <xyz/openbmc_project/eStoraged/server.hpp>
+#include <xyz/openbmc_project/Inventory/Item/Volume/server.hpp>
 
 #include <filesystem>
 #include <memory>
@@ -19,7 +19,7 @@
 namespace estoraged
 {
 using eStoragedInherit = sdbusplus::server::object_t<
-    sdbusplus::xyz::openbmc_project::server::eStoraged>;
+    sdbusplus::xyz::openbmc_project::Inventory::Item::server::Volume>;
 using estoraged::Cryptsetup;
 using estoraged::Filesystem;
 
@@ -55,21 +55,20 @@
     /** @brief Format the LUKS encrypted device and create empty filesystem.
      *
      *  @param[in] password - password to set for the LUKS device.
+     *  @param[in] type - filesystem type, e.g. ext4
      */
-    void format(std::vector<uint8_t> password) override;
+    void formatLuks(std::vector<uint8_t> password,
+                    FilesystemType type) override;
 
     /** @brief Erase the contents of the storage device.
      *
-     *  @param[in] password - password for the LUKS device.
      *  @param[in] eraseType - type of erase operation.
      */
-    void erase(std::vector<uint8_t> password, EraseMethod eraseType) override;
+    void erase(EraseMethod eraseType) override;
 
     /** @brief Unmount filesystem and lock the LUKS device.
-     *
-     *  @param[in] password - password for the LUKS device.
      */
-    void lock(std::vector<uint8_t> password) override;
+    void lock() override;
 
     /** @brief Unlock device and mount the filesystem.
      *
diff --git a/meson.build b/meson.build
index 1a61027..7282cf3 100644
--- a/meson.build
+++ b/meson.build
@@ -13,5 +13,4 @@
 eStoraged_dbus_headers = include_directories('.')
 
 subdir('include')
-subdir('xyz/openbmc_project/eStoraged')
 subdir('src')
diff --git a/src/erase/erase.cpp b/src/erase/erase.cpp
index 3b6ce17..5de96d6 100644
--- a/src/erase/erase.cpp
+++ b/src/erase/erase.cpp
@@ -6,9 +6,9 @@
 #include <stdplus/fd/create.hpp>
 #include <stdplus/fd/managed.hpp>
 #include <stdplus/handle/managed.hpp>
-#include <xyz/openbmc_project/eStoraged/error.hpp>
+#include <xyz/openbmc_project/Common/error.hpp>
 
-using sdbusplus::xyz::openbmc_project::eStoraged::Error::EraseError;
+using sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
 using stdplus::fd::ManagedFd;
 
 uint64_t Erase::findSizeOfBlockDevice()
@@ -27,7 +27,7 @@
         lg2::error("erase unable to open blockdev", "REDFISH_MESSAGE_ID",
                    std::string("OpenBMC.0.1.DriveEraseFailure"),
                    "REDFISH_MESSAGE_ARGS", std::to_string(fd.get()));
-        throw EraseError();
+        throw InternalFailure();
     }
     return bytes;
 }
diff --git a/src/erase/meson.build b/src/erase/meson.build
index 3c90ab9..6aaf3a3 100644
--- a/src/erase/meson.build
+++ b/src/erase/meson.build
@@ -4,7 +4,10 @@
   'erase.cpp',
   include_directories : eStoraged_headers,
   implicit_include_directories: false,
-  dependencies: [eStoraged_dbus, dependency('stdplus'),],
+  dependencies: [
+    dependency('phosphor-dbus-interfaces'),
+    dependency('stdplus'),
+  ],
 )
 
 libeStoragedErase_dep = declare_dependency(
diff --git a/src/erase/verifyDriveGeometry.cpp b/src/erase/verifyDriveGeometry.cpp
index 2996912..ea6c76f 100644
--- a/src/erase/verifyDriveGeometry.cpp
+++ b/src/erase/verifyDriveGeometry.cpp
@@ -3,11 +3,11 @@
 #include "estoraged_conf.hpp"
 
 #include <phosphor-logging/lg2.hpp>
-#include <xyz/openbmc_project/eStoraged/error.hpp>
+#include <xyz/openbmc_project/Common/error.hpp>
 
 #include <string>
 
-using sdbusplus::xyz::openbmc_project::eStoraged::Error::EraseError;
+using sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
 
 void VerifyDriveGeometry::geometryOkay(uint64_t bytes)
 {
@@ -18,7 +18,7 @@
                    "REDFISH_MESSAGE_ARGS",
                    std::to_string(bytes) + ">" +
                        std::to_string(ERASE_MAX_GEOMETRY));
-        throw EraseError();
+        throw InternalFailure();
     }
     else if (bytes < ERASE_MIN_GEOMETRY)
     {
@@ -27,7 +27,7 @@
             std::string("OpenBMC.0.1.DriveEraseFailure"),
             "REDFISH_MESSAGE_ARGS",
             std::to_string(bytes) + "<" + std::to_string(ERASE_MIN_GEOMETRY));
-        throw EraseError();
+        throw InternalFailure();
     }
     else
     {
diff --git a/src/estoraged.cpp b/src/estoraged.cpp
index 18e4248..91a7f12 100644
--- a/src/estoraged.cpp
+++ b/src/estoraged.cpp
@@ -9,32 +9,38 @@
 #include <stdlib.h>
 
 #include <phosphor-logging/lg2.hpp>
-#include <xyz/openbmc_project/eStoraged/error.hpp>
+#include <xyz/openbmc_project/Common/error.hpp>
 
 #include <filesystem>
 #include <iostream>
 #include <string_view>
 #include <vector>
 
-using sdbusplus::xyz::openbmc_project::eStoraged::Error::EraseError;
-
 namespace estoraged
 {
 
-using sdbusplus::xyz::openbmc_project::eStoraged::Error::EncryptionError;
-using sdbusplus::xyz::openbmc_project::eStoraged::Error::FilesystemError;
+using sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
+using sdbusplus::xyz::openbmc_project::Common::Error::ResourceNotFound;
+using sdbusplus::xyz::openbmc_project::Common::Error::UnsupportedRequest;
 
-void eStoraged::format(std::vector<uint8_t> password)
+void eStoraged::formatLuks(std::vector<uint8_t> password, FilesystemType type)
 {
     std::string msg = "OpenBMC.0.1.DriveFormat";
     lg2::info("Starting format", "REDFISH_MESSAGE_ID", msg);
 
+    if (type != FilesystemType::ext4)
+    {
+        lg2::error("Only ext4 filesystems are supported currently",
+                   "REDFISH_MESSAGE_ID", std::string("OpenBMC.0.1.FormatFail"));
+        throw UnsupportedRequest();
+    }
+
     CryptHandle cryptHandle(devPath.c_str());
     if (cryptHandle.get() == nullptr)
     {
         lg2::error("Failed to initialize crypt device", "REDFISH_MESSAGE_ID",
                    std::string("OpenBMC.0.1.FormatFail"));
-        throw EncryptionError();
+        throw ResourceNotFound();
     }
 
     formatLuksDev(cryptHandle.get(), password);
@@ -44,7 +50,7 @@
     mountFilesystem();
 }
 
-void eStoraged::erase(std::vector<uint8_t>, EraseMethod inEraseMethod)
+void eStoraged::erase(EraseMethod inEraseMethod)
 {
     std::cerr << "Erasing encrypted eMMC" << std::endl;
     lg2::info("Starting erase", "REDFISH_MESSAGE_ID",
@@ -89,7 +95,7 @@
     }
 }
 
-void eStoraged::lock(std::vector<uint8_t>)
+void eStoraged::lock()
 {
     std::string msg = "OpenBMC.0.1.DriveLock";
     lg2::info("Starting lock", "REDFISH_MESSAGE_ID", msg);
@@ -108,7 +114,7 @@
     {
         lg2::error("Failed to initialize crypt device", "REDFISH_MESSAGE_ID",
                    std::string("OpenBMC.0.1.UnlockFail"));
-        throw EncryptionError();
+        throw ResourceNotFound();
     }
 
     activateLuksDev(cryptHandle.get(), password);
@@ -145,7 +151,7 @@
     {
         lg2::error("Failed to create volume key", "REDFISH_MESSAGE_ID",
                    std::string("OpenBMC.0.1.FormatLuksDevFail"));
-        throw EncryptionError();
+        throw InternalFailure();
     }
     /* Format the LUKS encrypted device. */
     int retval =
@@ -157,7 +163,7 @@
         lg2::error("Failed to format encrypted device: {RETVAL}", "RETVAL",
                    retval, "REDFISH_MESSAGE_ID",
                    std::string("OpenBMC.0.1.FormatLuksDevFail"));
-        throw EncryptionError();
+        throw InternalFailure();
     }
 
     /* Device is now encrypted. */
@@ -172,7 +178,7 @@
     {
         lg2::error("Failed to set encryption password", "REDFISH_MESSAGE_ID",
                    std::string("OpenBMC.0.1.FormatLuksDevFail"));
-        throw EncryptionError();
+        throw InternalFailure();
     }
 
     lg2::info("Encrypted device {DEV} successfully formatted", "DEV", devPath,
@@ -192,7 +198,7 @@
         lg2::error("Failed to load LUKS header: {RETVAL}", "RETVAL", retval,
                    "REDFISH_MESSAGE_ID",
                    std::string("OpenBMC.0.1.ActivateLuksDevFail"));
-        throw EncryptionError();
+        throw InternalFailure();
     }
 
     retval = cryptIface->cryptActivateByPassphrase(
@@ -204,7 +210,7 @@
         lg2::error("Failed to activate LUKS dev: {RETVAL}", "RETVAL", retval,
                    "REDFISH_MESSAGE_ID",
                    std::string("OpenBMC.0.1.ActivateLuksDevFail"));
-        throw EncryptionError();
+        throw InternalFailure();
     }
 
     /* Device is now unlocked. */
@@ -224,7 +230,7 @@
         lg2::error("Failed to create filesystem: {RETVAL}", "RETVAL", retval,
                    "REDFISH_MESSAGE_ID",
                    std::string("OpenBMC.0.1.CreateFilesystemFail"));
-        throw FilesystemError();
+        throw InternalFailure();
     }
     lg2::info("Successfully created filesystem for /dev/mapper/{CONTAINER}",
               "CONTAINER", containerName, "REDFISH_MESSAGE_ID",
@@ -240,7 +246,7 @@
         lg2::error("Failed to create mount point: {DIR}", "DIR", mountPoint,
                    "REDFISH_MESSAGE_ID",
                    std::string("OpenBMC.0.1.MountFilesystemFail"));
-        throw FilesystemError();
+        throw InternalFailure();
     }
 
     /* Run the command to mount the filesystem. */
@@ -260,7 +266,7 @@
                        "REDFISH_MESSAGE_ID",
                        std::string("OpenBMC.0.1.MountFilesystemFail"));
         }
-        throw FilesystemError();
+        throw InternalFailure();
     }
 
     lg2::info("Successfully mounted filesystem at {DIR}", "DIR", mountPoint,
@@ -276,7 +282,7 @@
         lg2::error("Failed to unmount filesystem: {RETVAL}", "RETVAL", retval,
                    "REDFISH_MESSAGE_ID",
                    std::string("OpenBMC.0.1.UnmountFilesystemFail"));
-        throw FilesystemError();
+        throw InternalFailure();
     }
 
     /* Remove the mount point. */
@@ -286,7 +292,7 @@
         lg2::error("Failed to remove mount point {DIR}", "DIR", mountPoint,
                    "REDFISH_MESSAGE_ID",
                    std::string("OpenBMC.0.1.UnmountFilesystemFail"));
-        throw FilesystemError();
+        throw InternalFailure();
     }
 
     lg2::info("Successfully unmounted filesystem at {DIR}", "DIR", mountPoint,
@@ -306,7 +312,7 @@
         lg2::error("Failed to deactivate crypt device: {RETVAL}", "RETVAL",
                    retval, "REDFISH_MESSAGE_ID",
                    std::string("OpenBMC.0.1.DeactivateLuksDevFail"));
-        throw EncryptionError();
+        throw InternalFailure();
     }
 
     /* Device is now locked. */
diff --git a/src/meson.build b/src/meson.build
index 1390536..a85b3bc 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -7,10 +7,10 @@
     fallback: ['phosphor-logging',
                'phosphor_logging_dep'],
     ),
-  eStoraged_dbus,
   dependency('openssl'),
   dependency('libcryptsetup'),
   dependency('stdplus'),
+  dependency('phosphor-dbus-interfaces'),
 ]
 
 libeStoraged_lib = static_library(
diff --git a/src/test/erase/verifyGeometry_test.cpp b/src/test/erase/verifyGeometry_test.cpp
index 1731e75..de4d3fa 100644
--- a/src/test/erase/verifyGeometry_test.cpp
+++ b/src/test/erase/verifyGeometry_test.cpp
@@ -1,23 +1,26 @@
 #include "estoraged_conf.hpp"
 #include "verifyDriveGeometry.hpp"
 
-#include <xyz/openbmc_project/eStoraged/error.hpp>
+#include <xyz/openbmc_project/Common/error.hpp>
 
 #include <gmock/gmock-matchers.h>
 #include <gmock/gmock.h>
 #include <gtest/gtest.h>
-using sdbusplus::xyz::openbmc_project::eStoraged::Error::EraseError;
+
+using sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
 
 TEST(VerifyGeometry, TooBigFail)
 {
     VerifyDriveGeometry maxVerify("");
-    EXPECT_THROW(maxVerify.geometryOkay(ERASE_MAX_GEOMETRY + 1), EraseError);
+    EXPECT_THROW(maxVerify.geometryOkay(ERASE_MAX_GEOMETRY + 1),
+                 InternalFailure);
 }
 
 TEST(VerifyGeometry, TooSmallFail)
 {
     VerifyDriveGeometry minVerify("");
-    EXPECT_THROW(minVerify.geometryOkay(ERASE_MIN_GEOMETRY - 1), EraseError);
+    EXPECT_THROW(minVerify.geometryOkay(ERASE_MIN_GEOMETRY - 1),
+                 InternalFailure);
 }
 
 TEST(VerifyGeometry, pass)
diff --git a/src/test/estoraged_test.cpp b/src/test/estoraged_test.cpp
index f293ffc..6b93a88 100644
--- a/src/test/estoraged_test.cpp
+++ b/src/test/estoraged_test.cpp
@@ -7,7 +7,7 @@
 
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/test/sdbus_mock.hpp>
-#include <xyz/openbmc_project/eStoraged/error.hpp>
+#include <xyz/openbmc_project/Common/error.hpp>
 
 #include <exception>
 #include <filesystem>
@@ -72,8 +72,9 @@
                 (struct crypt_device * cd, const char* name), (override));
 };
 
-using sdbusplus::xyz::openbmc_project::eStoraged::Error::EncryptionError;
-using sdbusplus::xyz::openbmc_project::eStoraged::Error::FilesystemError;
+using sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
+using sdbusplus::xyz::openbmc_project::Common::Error::ResourceNotFound;
+using sdbusplus::xyz::openbmc_project::Inventory::Item::server::Volume;
 using std::filesystem::path;
 using ::testing::_;
 using ::testing::ContainsRegex;
@@ -96,7 +97,8 @@
     std::ofstream testFile;
     std::unique_ptr<estoraged::eStoraged> esObject;
     static constexpr auto TEST_PATH = "/test/openbmc_project/storage/test_dev";
-    static constexpr auto ESTORAGED_INTERFACE = "xyz.openbmc_project.eStoraged";
+    static constexpr auto ESTORAGED_INTERFACE =
+        "xyz.openbmc_project.Inventory.Item.Volume";
     sdbusplus::bus::bus bus;
     std::string passwordString;
     std::vector<uint8_t> password;
@@ -188,10 +190,10 @@
     EXPECT_CALL(*mockCryptIface, cryptDeactivate(_, _)).Times(1);
 
     /* Format the encrypted device. */
-    esObject->format(password);
+    esObject->formatLuks(password, Volume::FilesystemType::ext4);
     EXPECT_FALSE(esObject->isLocked());
 
-    esObject->lock(password);
+    esObject->lock();
     EXPECT_TRUE(esObject->isLocked());
 }
 
@@ -201,7 +203,8 @@
     /* Delete the test file. */
     EXPECT_EQ(0, unlink(testFileName));
 
-    EXPECT_THROW(esObject->format(password), EncryptionError);
+    EXPECT_THROW(esObject->formatLuks(password, Volume::FilesystemType::ext4),
+                 ResourceNotFound);
     EXPECT_FALSE(esObject->isLocked());
 
     /* Create the test file again, so that the TearDown function works. */
@@ -216,7 +219,8 @@
     EXPECT_CALL(*mockCryptIface, cryptFormat(_, _, _, _, _, _, _, _))
         .WillOnce(Return(-1));
 
-    EXPECT_THROW(esObject->format(password), EncryptionError);
+    EXPECT_THROW(esObject->formatLuks(password, Volume::FilesystemType::ext4),
+                 InternalFailure);
     EXPECT_FALSE(esObject->isLocked());
 }
 
@@ -233,7 +237,8 @@
     EXPECT_CALL(*mockCryptIface, cryptKeyslotAddByVolumeKey(_, _, _, _, _, _))
         .WillOnce(Return(-1));
 
-    EXPECT_THROW(esObject->format(password), EncryptionError);
+    EXPECT_THROW(esObject->formatLuks(password, Volume::FilesystemType::ext4),
+                 InternalFailure);
     EXPECT_TRUE(esObject->isLocked());
 }
 
@@ -252,7 +257,8 @@
 
     EXPECT_CALL(*mockCryptIface, cryptLoad(_, _, _)).WillOnce(Return(-1));
 
-    EXPECT_THROW(esObject->format(password), EncryptionError);
+    EXPECT_THROW(esObject->formatLuks(password, Volume::FilesystemType::ext4),
+                 InternalFailure);
     EXPECT_TRUE(esObject->isLocked());
 }
 
@@ -274,7 +280,8 @@
     EXPECT_CALL(*mockCryptIface, cryptActivateByPassphrase(_, _, _, _, _, _))
         .WillOnce(Return(-1));
 
-    EXPECT_THROW(esObject->format(password), EncryptionError);
+    EXPECT_THROW(esObject->formatLuks(password, Volume::FilesystemType::ext4),
+                 InternalFailure);
     EXPECT_TRUE(esObject->isLocked());
 }
 
@@ -298,7 +305,8 @@
 
     EXPECT_CALL(*mockFsIface, runMkfs(testLuksDevName)).WillOnce(Return(-1));
 
-    EXPECT_THROW(esObject->format(password), FilesystemError);
+    EXPECT_THROW(esObject->formatLuks(password, Volume::FilesystemType::ext4),
+                 InternalFailure);
     EXPECT_FALSE(esObject->isLocked());
 }
 
@@ -325,7 +333,8 @@
     EXPECT_CALL(*mockFsIface, createDirectory(path(esObject->getMountPoint())))
         .WillOnce(Return(false));
 
-    EXPECT_THROW(esObject->format(password), FilesystemError);
+    EXPECT_THROW(esObject->formatLuks(password, Volume::FilesystemType::ext4),
+                 InternalFailure);
     EXPECT_FALSE(esObject->isLocked());
 }
 
@@ -360,7 +369,8 @@
     EXPECT_CALL(*mockFsIface, removeDirectory(path(esObject->getMountPoint())))
         .WillOnce(Return(true));
 
-    EXPECT_THROW(esObject->format(password), FilesystemError);
+    EXPECT_THROW(esObject->formatLuks(password, Volume::FilesystemType::ext4),
+                 InternalFailure);
     EXPECT_FALSE(esObject->isLocked());
 }
 
@@ -395,10 +405,10 @@
     EXPECT_CALL(*mockFsIface, doUnmount(StrEq(esObject->getMountPoint())))
         .WillOnce(Return(-1));
 
-    esObject->format(password);
+    esObject->formatLuks(password, Volume::FilesystemType::ext4);
     EXPECT_FALSE(esObject->isLocked());
 
-    EXPECT_THROW(esObject->lock(password), FilesystemError);
+    EXPECT_THROW(esObject->lock(), InternalFailure);
     EXPECT_FALSE(esObject->isLocked());
 }
 
@@ -436,11 +446,11 @@
     EXPECT_CALL(*mockFsIface, removeDirectory(path(esObject->getMountPoint())))
         .WillOnce(Return(false));
 
-    esObject->format(password);
+    esObject->formatLuks(password, Volume::FilesystemType::ext4);
     EXPECT_FALSE(esObject->isLocked());
 
     /* This will fail to remove the mount point. */
-    EXPECT_THROW(esObject->lock(password), FilesystemError);
+    EXPECT_THROW(esObject->lock(), InternalFailure);
     EXPECT_FALSE(esObject->isLocked());
 }
 
@@ -481,10 +491,10 @@
     EXPECT_CALL(*mockCryptIface, cryptDeactivate(_, _)).WillOnce(Return(-1));
 
     /* Format the encrypted device. */
-    esObject->format(password);
+    esObject->formatLuks(password, Volume::FilesystemType::ext4);
     EXPECT_FALSE(esObject->isLocked());
 
-    EXPECT_THROW(esObject->lock(password), EncryptionError);
+    EXPECT_THROW(esObject->lock(), InternalFailure);
     EXPECT_FALSE(esObject->isLocked());
 }
 
diff --git a/xyz/openbmc_project/eStoraged.errors.yaml b/xyz/openbmc_project/eStoraged.errors.yaml
deleted file mode 100644
index d3d3603..0000000
--- a/xyz/openbmc_project/eStoraged.errors.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-- name: EncryptionError
-  description: One of the cryptsetup APIs returned an error.
-- name: EraseError
-  description: Failed to erase the device.
-- name: FilesystemError
-  description: Failed to create or remove the filesystem.
diff --git a/xyz/openbmc_project/eStoraged.interface.yaml b/xyz/openbmc_project/eStoraged.interface.yaml
deleted file mode 100644
index 29bb85c..0000000
--- a/xyz/openbmc_project/eStoraged.interface.yaml
+++ /dev/null
@@ -1,110 +0,0 @@
-description: >
-    D-bus interface to manage an encrypted storage device.
-
-methods:
-    - name: Format
-      description: >
-        Format the encrypted device and create an ext4 filesystem.
-      parameters:
-        - name: Password
-          type: array[byte]
-          description: >
-            Array of bytes to use as the LUKS password.
-      errors:
-        - self.Error.EncryptionError
-        - self.Error.FilesystemError
-
-    - name: Erase
-      description: >
-        Erase the contents of the device.
-      parameters:
-        - name: Password
-          type: array[byte]
-          description: >
-            Array of bytes to use as the LUKS password.
-        - name: EraseType
-          type: enum[self.EraseMethod]
-          description: >
-            Describes what type of erase is done.
-      errors:
-        - self.Error.EncryptionError
-        - self.Error.EraseError
-        - self.Error.FilesystemError
-
-    - name: Lock
-      description: >
-        Unmount the filesystem, lock the device, and remove sensitive data
-        (e.g. volume key) from memory.
-      parameters:
-        - name: Password
-          type: array[byte]
-          description: >
-            Array of bytes to use as the LUKS password.
-      errors:
-        - self.Error.EncryptionError
-        - self.Error.FilesystemError
-
-    - name: Unlock
-      description: >
-        Activate the device and mount the filesystem.
-      parameters:
-        - name: Password
-          type: array[byte]
-          description: >
-            Array of bytes to use as the LUKS password.
-      errors:
-        - self.Error.EncryptionError
-        - self.Error.FilesystemError
-
-    - name: ChangePassword
-      description: >
-        Change the password that unlocks the storage device.
-      parameters:
-        - name: OldPassword
-          type: array[byte]
-          description: >
-            Array of bytes for the old LUKS password.
-        - name: NewPassword
-          type: array[byte]
-          description: >
-            Array of bytes to use as the LUKS password.
-      errors:
-        - self.Error.EncryptionError
-
-properties:
-    - name: Locked
-      type: boolean
-      default: false
-      description: >
-        Indicates whether the device is locked.
-
-enumerations:
-    - name: EraseMethod
-      description: >
-        Indicates which erase method/step is being requested.
-      values:
-        - name: CryptoErase
-          description: >
-            Destroys the encryption key slots, preventing decyrption.
-        - name: VerifyGeometry
-          description: >
-            Confirms a set percent of the disk is accessible.
-        - name: LogicalOverWrite
-          description: >
-            Overwrites the disk with a reproducible incompressible pattern.
-        - name: LogicalVerify
-          description: >
-            Verifies a reproducible pattern has been written to the disk.
-        - name: VendorSanitize
-          description: >
-            Uses the sanitization provided by the device firmware.
-        - name: ZeroOverWrite
-          description: >
-            Writes zeros over the whole disk.
-        - name: ZeroVerify
-          description: >
-            Verifies the the entire disk has been zeroed.
-        - name: SecuredLocked
-          description: >
-            Locks the disk to prevent data being written to it.
-
diff --git a/xyz/openbmc_project/eStoraged/meson.build b/xyz/openbmc_project/eStoraged/meson.build
deleted file mode 100644
index d143487..0000000
--- a/xyz/openbmc_project/eStoraged/meson.build
+++ /dev/null
@@ -1,74 +0,0 @@
-sdbuspp_prog = find_program('sdbus++')
-
-domain = 'xyz.openbmc_project.eStoraged'
-if_yaml_file = files('../eStoraged.interface.yaml')
-
-if_cpp = custom_target(
-  'server.cpp',
-  output: 'server.cpp',
-  input: if_yaml_file,
-  capture: true,
-  command: [sdbuspp_prog, '-r', eStoraged_root, 'interface', 'server-cpp', domain])
-
-if_hpp = custom_target(
-  'server.hpp',
-  output: 'server.hpp',
-  input: if_yaml_file,
-  capture: true,
-  command: [sdbuspp_prog, '-r', eStoraged_root, 'interface', 'server-header', domain],
-  install: true,
-  install_dir: get_option('includedir') / 'xyz/openbmc_project/eStoraged')
-
-error_yaml_file = files('../eStoraged.errors.yaml')
-
-error_cpp = custom_target(
-  'error.cpp',
-  output: 'error.cpp',
-  input: error_yaml_file,
-  capture: true,
-  command: [sdbuspp_prog, '-r', eStoraged_root, 'error', 'exception-cpp', domain])
-
-error_hpp = custom_target(
-  'error.hpp',
-  output: 'error.hpp',
-  input: error_yaml_file,
-  capture: true,
-  command: [sdbuspp_prog, '-r', eStoraged_root, 'error', 'exception-header', domain],
-  install: true,
-  install_dir: get_option('includedir') / 'xyz/openbmc_project/eStoraged')
-
-eStoraged_dbus_deps = [
-  dependency('sdbusplus'),
-]
-
-eStoraged_dbus_lib = library(
-  'eStoraged-dbus',
-  if_cpp,
-  if_hpp,
-  error_cpp,
-  error_hpp,
-  implicit_include_directories: false,
-  include_directories: eStoraged_dbus_headers,
-  version: meson.project_version(),
-  dependencies: eStoraged_dbus_deps,
-  install: true)
-
-eStoraged_dbus = declare_dependency(
-  dependencies: eStoraged_dbus_deps,
-  sources: [if_hpp, error_hpp],
-  include_directories: eStoraged_dbus_headers,
-  link_with: eStoraged_dbus_lib)
-
-eStoraged_dbus_reqs = []
-foreach dep : eStoraged_dbus_deps
-  if dep.type_name() == 'pkgconfig'
-    eStoraged_dbus_reqs += dep
-  endif
-endforeach
-
-import('pkgconfig').generate(
-  name: 'eStoraged-dbus',
-  description: 'eStoraged DBus Bindings',
-  version: meson.project_version(),
-  libraries: eStoraged_dbus,
-  requires: eStoraged_dbus_reqs)
