diff --git a/src/commands/smith.rs b/src/commands/smith.rs
index 0e64606f915f4dd5f9084f52a4079f3ceb181e72..1a270f3e943a0f6e3652a4143936986f48e893d3 100644
--- a/src/commands/smith.rs
+++ b/src/commands/smith.rs
@@ -194,25 +194,10 @@ pub async fn go_online(data: &Data) -> Result<(), GcliError> {
 
 /// claim smith membership
 pub async fn claim_smith_membership(data: &Data) -> Result<(), subxt::Error> {
-	let progress = data
-		.client()
-		.tx()
-		.sign_and_submit_then_watch(
-			&runtime::tx().smith_membership().claim_membership(),
-			&PairSigner::new(data.keypair()),
-			BaseExtrinsicParamsBuilder::new(),
-		)
-		.await?;
-
-	if data.args.no_wait {
-		return Ok(());
-	}
-	let events = track_progress(progress).await?;
-	if let Some(e) = events.find_first::<runtime::smith_membership::events::MembershipAcquired>()? {
-		println!("{e:?}");
-	}
-
-	Ok(())
+	submit_call_and_look_event::<
+		runtime::smith_membership::events::MembershipAcquired,
+		StaticTxPayload< runtime::smith_membership::calls::ClaimMembership>,
+	>(data, &runtime::tx().smith_membership().claim_membership()).await
 }
 
 /// renew smith membership