diff --git a/CHANGELOG.md b/CHANGELOG.md
index 83d20ca217d35892ed13a0e8108ac09b4a3cbed0..3e8b1026613e80d9fc96a27ae964018b239d9d67 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,7 +2,7 @@
 
 List of changelogs ordered from latest to oldest
 
-## [0.4.1] - 2025-03-23
+## [0.4.1] - 2025-04-04
 ### Added / Changed
 - We now use `ed25519` crypto scheme by default for all commands.  It means that if you import your substrate mnemonic without giving a specific argument to change the crypto scheme, the resulting SS58 address will not be the same as before (it was using `sr25519` for substrate mnemonic previously)
   - Extra `-c` / `--crypto-scheme` argument allows to specify which crypto scheme to use (`sr25519` or `ed25519`) and having a default value of `ed25519` in most places.
diff --git a/src/commands/identity.rs b/src/commands/identity.rs
index 25e840977582c594f5e649697b6b01722936345f..67e26282f4ffb1e25972bdfbfebaf39c2436fb21 100644
--- a/src/commands/identity.rs
+++ b/src/commands/identity.rs
@@ -165,14 +165,14 @@ pub async fn handle_command(data: Data, command: Subcommand) -> Result<(), GcliE
 			}
 
 			if let Some(address) = params.address {
-				let key_pair = fetch_vault_keypair_for_target_address(&data, address).await?;
+				let key_pair = commands::vault::fetch_vault_keypair_for_address(&data, address).await?;
 				perform_link_account(data, key_pair).await?;
 			} else if let Some(vault_name) = params.vault_name {
 				let account_tree_node =
 					retrieve_account_tree_node_for_name(data.connect_db(), &vault_name).await?;
 				let address = account_tree_node.borrow().account.address.0.clone();
 
-				let key_pair = fetch_vault_keypair_for_target_address(&data, address).await?;
+				let key_pair = commands::vault::fetch_vault_keypair_for_address(&data, address).await?;
 				perform_link_account(data, key_pair).await?;
 			} else if let Some(secret_format) = params.secret_format {
 				let keypair = get_keypair(
@@ -205,14 +205,14 @@ pub async fn handle_command(data: Data, command: Subcommand) -> Result<(), GcliE
 			}
 
 			if let Some(address) = params.address {
-				let key_pair = fetch_vault_keypair_for_target_address(&data, address).await?;
+				let key_pair = commands::vault::fetch_vault_keypair_for_address(&data, address).await?;
 				perform_change_owner_key(data, key_pair).await?;
 			} else if let Some(vault_name) = params.vault_name {
 				let account_tree_node =
 					retrieve_account_tree_node_for_name(data.connect_db(), &vault_name).await?;
 				let address = account_tree_node.borrow().account.address.0.clone();
 
-				let key_pair = fetch_vault_keypair_for_target_address(&data, address).await?;
+				let key_pair = commands::vault::fetch_vault_keypair_for_address(&data, address).await?;
 				perform_change_owner_key(data, key_pair).await?;
 			} else if let Some(secret_format) = params.secret_format {
 				let keypair = get_keypair(
@@ -237,16 +237,6 @@ pub async fn handle_command(data: Data, command: Subcommand) -> Result<(), GcliE
 	Ok(())
 }
 
-async fn fetch_vault_keypair_for_target_address(
-	data: &Data,
-	address: AccountId,
-) -> Result<KeyPair, GcliError> {
-	println!("Trying to retrieve key pair for target address:'{address}'");
-	commands::vault::try_fetch_key_pair(data, address)
-		.await?
-		.ok_or_else(|| GcliError::Input("target vault account not found".to_string()))
-}
-
 // ======================
 
 // TODO derive this automatically
diff --git a/src/commands/vault.rs b/src/commands/vault.rs
index 7a5ef9ed2c4fae6211a900efef77f43e0da7fa26..f6941cf268202ebf5ae160919f9bcd82be0d4fe1 100644
--- a/src/commands/vault.rs
+++ b/src/commands/vault.rs
@@ -1195,7 +1195,21 @@ fn find_substrate_vault_key_file(data: &Data, address: &str) -> Result<Option<Pa
 	Ok(None)
 }
 
-/// try to get secret in keystore, prompt for the password and compute the keypair
+/// Gets secret in keystore, prompt for the password and compute the keypair associated to `address`
+/// 
+/// Returns an error if no entry was found in the keystore or if another error occurred during the process
+pub async fn fetch_vault_keypair_for_address(
+	data: &Data,
+	address: AccountId,
+) -> Result<KeyPair, GcliError> {
+	println!("Trying to retrieve key pair for address:'{address}'");
+	try_fetch_key_pair(data, address)
+		.await?
+		.ok_or_else(|| GcliError::Input("vault account not found".to_string()))
+}
+
+
+/// try to get secret in keystore, prompt for the password and compute the keypair associated to `address`
 pub async fn try_fetch_key_pair(
 	data: &Data,
 	address: AccountId,