diff --git a/bridges/bin/millau/node/Cargo.toml b/bridges/bin/millau/node/Cargo.toml
index 3825b92b703c24307004b700513ff769c3553fdf..9498b7311370daec23dd36c152f32009ebbf3b1e 100644
--- a/bridges/bin/millau/node/Cargo.toml
+++ b/bridges/bin/millau/node/Cargo.toml
@@ -12,7 +12,7 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 [dependencies]
 clap = { version = "3.1", features = ["derive"] }
 jsonrpc-core = "18.0"
-serde_json = "1.0.59"
+serde_json = "1.0.79"
 
 # Bridge dependencies
 
diff --git a/bridges/bin/millau/node/src/command.rs b/bridges/bin/millau/node/src/command.rs
index 4dbf9575dfec7ebae6c94ef69b774fe39b71663b..3653428d1044fe63d9252853b8480d639728752b 100644
--- a/bridges/bin/millau/node/src/command.rs
+++ b/bridges/bin/millau/node/src/command.rs
@@ -135,7 +135,7 @@ pub fn run() -> sc_cli::Result<()> {
 			let runner = cli.create_runner(cmd)?;
 			runner.async_run(|config| {
 				let PartialComponents { client, task_manager, backend, .. } = new_partial(&config)?;
-				Ok((cmd.run(client, backend), task_manager))
+				Ok((cmd.run(client, backend, None), task_manager))
 			})
 		},
 		Some(Subcommand::Inspect(cmd)) => {
diff --git a/bridges/bin/rialto-parachain/node/src/command.rs b/bridges/bin/rialto-parachain/node/src/command.rs
index c47e742675da169002019f9aacd3fcce811ffb81..f93a939b9ecb6bdaf81e9171f17678f4d9cd1e5e 100644
--- a/bridges/bin/rialto-parachain/node/src/command.rs
+++ b/bridges/bin/rialto-parachain/node/src/command.rs
@@ -202,9 +202,11 @@ pub fn run() -> Result<()> {
 			})
 		},
 		Some(Subcommand::Revert(cmd)) => {
-			construct_async_run!(|components, cli, cmd, config| Ok(
-				cmd.run(components.client, components.backend)
-			))
+			construct_async_run!(|components, cli, cmd, config| Ok(cmd.run(
+				components.client,
+				components.backend,
+				None
+			)))
 		},
 		Some(Subcommand::ExportGenesisState(params)) => {
 			let mut builder = sc_cli::LoggerBuilder::new("");
diff --git a/bridges/bin/rialto/node/Cargo.toml b/bridges/bin/rialto/node/Cargo.toml
index e44ceb45faa97226f2a65f197367d1a1832a8921..31699ffad0296140ed527e6a0dcf27f4360ce6b8 100644
--- a/bridges/bin/rialto/node/Cargo.toml
+++ b/bridges/bin/rialto/node/Cargo.toml
@@ -16,7 +16,7 @@ jsonrpc-core = "18.0"
 kvdb = "0.11"
 kvdb-rocksdb = "0.15"
 lru = "0.7"
-serde_json = "1.0.59"
+serde_json = "1.0.79"
 thiserror = "1.0"
 
 # Bridge dependencies
diff --git a/bridges/bin/rialto/node/src/command.rs b/bridges/bin/rialto/node/src/command.rs
index da92837f06c09f47ebe40c9fa264c3c2890b9af4..24e73f6fffc34dba7df578464b87cc9405f7d398 100644
--- a/bridges/bin/rialto/node/src/command.rs
+++ b/bridges/bin/rialto/node/src/command.rs
@@ -147,7 +147,7 @@ pub fn run() -> sc_cli::Result<()> {
 			runner.async_run(|mut config| {
 				let (client, backend, _, task_manager) =
 					polkadot_service::new_chain_ops(&mut config, None).map_err(service_error)?;
-				Ok((cmd.run(client, backend), task_manager))
+				Ok((cmd.run(client, backend, None), task_manager))
 			})
 		},
 		Some(Subcommand::Inspect(cmd)) => {
diff --git a/bridges/relays/bin-substrate/src/cli/relay_headers_and_messages.rs b/bridges/relays/bin-substrate/src/cli/relay_headers_and_messages.rs
index 4ff6ee0947cb2a5c6648532cf5bded67eb81671d..d071d1f8910f2d3cccb352ceb594817c25ecab8c 100644
--- a/bridges/relays/bin-substrate/src/cli/relay_headers_and_messages.rs
+++ b/bridges/relays/bin-substrate/src/cli/relay_headers_and_messages.rs
@@ -330,9 +330,9 @@ impl RelayHeadersAndMessages {
 					LeftToRightMessageLane,
 					Left,
 				>(
-					left_client.clone(),
+					left_client,
 					TransactionParams {
-						signer: left_messages_pallet_owner.clone(),
+						signer: left_messages_pallet_owner,
 						mortality: left_transactions_mortality,
 					},
 					left_to_right_metrics
@@ -366,9 +366,9 @@ impl RelayHeadersAndMessages {
 					RightToLeftMessageLane,
 					Right,
 				>(
-					right_client.clone(),
+					right_client,
 					TransactionParams {
-						signer: right_messages_pallet_owner.clone(),
+						signer: right_messages_pallet_owner,
 						mortality: right_transactions_mortality,
 					},
 					right_to_left_metrics
diff --git a/bridges/relays/bin-substrate/src/cli/swap_tokens.rs b/bridges/relays/bin-substrate/src/cli/swap_tokens.rs
index 0758deddfd103f57da3c4d66aeebea7d480a86ba..1467df3711c35319092b4bfd7be2d563abc40241 100644
--- a/bridges/relays/bin-substrate/src/cli/swap_tokens.rs
+++ b/bridges/relays/bin-substrate/src/cli/swap_tokens.rs
@@ -221,7 +221,7 @@ impl SwapTokens {
 					_,
 				>(
 					&source_client,
-					target_to_source_conversion_rate_override.clone(),
+					target_to_source_conversion_rate_override,
 					ESTIMATE_SOURCE_TO_TARGET_MESSAGE_FEE_METHOD,
 					SOURCE_TO_TARGET_LANE_ID,
 					bp_message_dispatch::MessagePayload {
@@ -384,7 +384,7 @@ impl SwapTokens {
 						_,
 					>(
 						&target_client,
-						source_to_target_conversion_rate_override.clone(),
+						source_to_target_conversion_rate_override,
 						ESTIMATE_TARGET_TO_SOURCE_MESSAGE_FEE_METHOD,
 						TARGET_TO_SOURCE_LANE_ID,
 						claim_swap_message.clone(),
diff --git a/bridges/relays/client-substrate/src/chain.rs b/bridges/relays/client-substrate/src/chain.rs
index 60adfb0a88ac2dd97ddaed1974b30bd68f14a6ad..a55fa64d850ce74852faf10e84ef44f7c36885c9 100644
--- a/bridges/relays/client-substrate/src/chain.rs
+++ b/bridges/relays/client-substrate/src/chain.rs
@@ -151,6 +151,7 @@ impl<C: Chain> UnsignedTransaction<C> {
 	}
 
 	/// Set transaction tip.
+	#[must_use]
 	pub fn tip(mut self, tip: C::Balance) -> Self {
 		self.tip = tip;
 		self
diff --git a/bridges/relays/utils/src/metrics.rs b/bridges/relays/utils/src/metrics.rs
index 084f72e7950c527a927a3c764d121a3f5c9d1da7..b5225fca0e0c86e5aa71f346733fe80d2471dc37 100644
--- a/bridges/relays/utils/src/metrics.rs
+++ b/bridges/relays/utils/src/metrics.rs
@@ -105,6 +105,7 @@ impl MetricsParams {
 	}
 
 	/// Do not expose metrics.
+	#[must_use]
 	pub fn disable(mut self) -> Self {
 		self.address = None;
 		self
diff --git a/bridges/relays/utils/src/relay_loop.rs b/bridges/relays/utils/src/relay_loop.rs
index 521a6345d3e39c988657266b1a68f300c469460a..3c1d2d4ae8287b885841da161bc81be704e1b1c3 100644
--- a/bridges/relays/utils/src/relay_loop.rs
+++ b/bridges/relays/utils/src/relay_loop.rs
@@ -85,6 +85,7 @@ pub struct LoopMetrics<SC, TC, LM> {
 
 impl<SC, TC, LM> Loop<SC, TC, LM> {
 	/// Customize delay between reconnect attempts.
+	#[must_use]
 	pub fn reconnect_delay(mut self, reconnect_delay: Duration) -> Self {
 		self.reconnect_delay = reconnect_delay;
 		self