diff --git a/include/cryptsetupInterface.hpp b/include/cryptsetupInterface.hpp
index e13320c..fb03a8b 100644
--- a/include/cryptsetupInterface.hpp
+++ b/include/cryptsetupInterface.hpp
@@ -140,7 +140,7 @@
      */
     virtual int cryptKeyslotDestroy(struct crypt_device* cd, int keyslot) = 0;
 
-    /** @breif Wapper around crypt_keyslot_max
+    /** @brief Wrapper around crypt_keyslot_max
      *  @details Used for mocking purposes.
      *
      * @param type crypt device type
@@ -150,7 +150,7 @@
      */
     virtual int cryptKeySlotMax(const char* type) = 0;
 
-    /** @breif Wapper around crypt_keyslot_status
+    /** @brief Wrapper around crypt_keyslot_status
      *  @details Used for mocking purposes.
      *  Get information about particular key slot.
      *
@@ -158,10 +158,16 @@
      * @param keyslot requested keyslot to check or CRYPT_ANY_SLOT
      *
      * @return value defined by crypt_keyslot_info
-     *
      */
     virtual crypt_keyslot_info cryptKeySlotStatus(struct crypt_device* cd,
                                                   int keyslot) = 0;
+
+    /** @brief Wrapper around crypt_get_dir.
+     *  @details Used for mocking purposes.
+     *
+     *  @returns the directory where mapped crypt devices are created.
+     */
+    virtual std::string cryptGetDir() = 0;
 };
 
 /** @class Cryptsetup
@@ -242,6 +248,11 @@
     {
         return crypt_keyslot_status(cd, keyslot);
     }
+
+    std::string cryptGetDir() override
+    {
+        return {crypt_get_dir()};
+    }
 };
 
 /** @class CryptHandle
diff --git a/include/estoraged.hpp b/include/estoraged.hpp
index 42d60f3..8e4ceb7 100644
--- a/include/estoraged.hpp
+++ b/include/estoraged.hpp
@@ -103,6 +103,9 @@
     /** @brief Get the mount point for the filesystem on the LUKS device. */
     std::string_view getMountPoint() const;
 
+    /** @brief Get the path to the mapped crypt device. */
+    std::string_view getCryptDevicePath() const;
+
   private:
     /** @brief Full path of the device file, e.g. /dev/mmcblk0. */
     std::string devPath;
@@ -126,6 +129,9 @@
      */
     std::unique_ptr<FilesystemInterface> fsIface;
 
+    /** @brief Path where the mapped crypt device gets created. */
+    const std::string cryptDevicePath;
+
     /** @brief D-Bus object server. */
     sdbusplus::asio::object_server& objectServer;
 
@@ -187,12 +193,6 @@
 
     /** @brief Unmount the filesystem. */
     void unmountFilesystem();
-
-    /** @brief Set the locked property.
-     *
-     *  @param[in] isLocked - indicates whether the LUKS device is locked.
-     */
-    void locked(bool isLocked);
 };
 
 } // namespace estoraged
diff --git a/include/filesystemInterface.hpp b/include/filesystemInterface.hpp
index 12495cd..d5de5e8 100644
--- a/include/filesystemInterface.hpp
+++ b/include/filesystemInterface.hpp
@@ -27,11 +27,11 @@
     /** @brief Runs the mkfs command to create the filesystem.
      *  @details Used for mocking purposes.
      *
-     *  @param[in] logicalVolume - name of the mapped LUKS device.
+     *  @param[in] logicalVolumePath - path to the mapped LUKS device.
      *
      *  @returns 0 on success, nonzero on failure.
      */
-    virtual int runMkfs(const std::string& logicalVolume) = 0;
+    virtual int runMkfs(const std::string& logicalVolumePath) = 0;
 
     /** @brief Wrapper around mount().
      *  @details Used for mocking purposes.
@@ -101,9 +101,9 @@
     Filesystem(Filesystem&&) = delete;
     Filesystem& operator=(Filesystem&&) = delete;
 
-    int runMkfs(const std::string& logicalVolume) override
+    int runMkfs(const std::string& logicalVolumePath) override
     {
-        std::string mkfsCommand("mkfs.ext4 /dev/mapper/" + logicalVolume);
+        std::string mkfsCommand("mkfs.ext4 " + logicalVolumePath);
         // calling 'system' uses a command processor //NOLINTNEXTLINE
         return system(mkfsCommand.c_str());
     }
