diff --git a/src/commands/smith.rs b/src/commands/smith.rs
index 1a270f3e943a0f6e3652a4143936986f48e893d3..3e1134ba92af9d7083e9806680ece7528b5b08fa 100644
--- a/src/commands/smith.rs
+++ b/src/commands/smith.rs
@@ -172,63 +172,38 @@ pub async fn go_online(data: &Data) -> Result<(), GcliError> {
 		));
 	}
 
-	let progress = data
-		.client()
-		.tx()
-		.sign_and_submit_then_watch(
-			&runtime::tx().authority_members().go_online(),
-			&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::authority_members::events::MemberGoOnline>()? {
-		println!("{e:?}");
-	}
-	Ok(())
+	submit_call_and_look_event::<
+		runtime::authority_members::events::MemberGoOnline,
+		StaticTxPayload<runtime::authority_members::calls::GoOnline>,
+	>(data, &runtime::tx().authority_members().go_online())
+	.await.map_err(|e| e.into())
 }
 
 /// claim smith membership
 pub async fn claim_smith_membership(data: &Data) -> Result<(), subxt::Error> {
 	submit_call_and_look_event::<
 		runtime::smith_membership::events::MembershipAcquired,
-		StaticTxPayload< runtime::smith_membership::calls::ClaimMembership>,
-	>(data, &runtime::tx().smith_membership().claim_membership()).await
+		StaticTxPayload<runtime::smith_membership::calls::ClaimMembership>,
+	>(data, &runtime::tx().smith_membership().claim_membership())
+	.await
 }
 
 /// renew smith membership
 pub async fn renew_smith_membership(data: &Data) -> Result<(), subxt::Error> {
 	submit_call_and_look_event::<
 		runtime::smith_membership::events::MembershipRenewed,
-		StaticTxPayload< runtime::smith_membership::calls::RenewMembership>,
-	>(data, &runtime::tx().smith_membership().renew_membership()).await
+		StaticTxPayload<runtime::smith_membership::calls::RenewMembership>,
+	>(data, &runtime::tx().smith_membership().renew_membership())
+	.await
 }
 
 /// submit go_offline
 pub async fn go_offline(data: &Data) -> Result<(), subxt::Error> {
-	let progress = data
-		.client()
-		.tx()
-		.sign_and_submit_then_watch(
-			&runtime::tx().authority_members().go_offline(),
-			&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::authority_members::events::MemberGoOffline>()? {
-		println!("{e:?}");
-	}
-
-	Ok(())
+	submit_call_and_look_event::<
+		runtime::authority_members::events::MemberGoOffline,
+		StaticTxPayload<runtime::authority_members::calls::GoOffline>,
+	>(data, &runtime::tx().authority_members().go_offline())
+	.await
 }
 
 /// get online authorities