diff --git a/bridges/relays/messages/src/message_race_delivery.rs b/bridges/relays/messages/src/message_race_delivery.rs
index 1cd2cbd267185c3b7110438dde200c2a25b98239..dc994364f1787989e1ebafca1960429c52c5578a 100644
--- a/bridges/relays/messages/src/message_race_delivery.rs
+++ b/bridges/relays/messages/src/message_race_delivery.rs
@@ -521,7 +521,7 @@ where
 			nonces_queue_range: 0..maximal_source_queue_index + 1,
 		};
 
-		let strategy = EnforcementStrategy::new(self.relay_strategy.clone());
+		let mut strategy = EnforcementStrategy::new(self.relay_strategy.clone());
 		let range_end = strategy.decide(reference).await?;
 
 		let range_begin = source_queue[0].1.begin();
diff --git a/bridges/relays/messages/src/relay_strategy/altruistic_strategy.rs b/bridges/relays/messages/src/relay_strategy/altruistic_strategy.rs
index f932b796b0dee1d148c32ac728b541861b791c1c..d6fec7f1297b3ec6e6b4b7dccc7aada76d11f307 100644
--- a/bridges/relays/messages/src/relay_strategy/altruistic_strategy.rs
+++ b/bridges/relays/messages/src/relay_strategy/altruistic_strategy.rs
@@ -37,7 +37,7 @@ impl RelayStrategy for AltruisticStrategy {
 		SourceClient: MessageLaneSourceClient<P>,
 		TargetClient: MessageLaneTargetClient<P>,
 	>(
-		&self,
+		&mut self,
 		_reference: &mut RelayReference<P, SourceClient, TargetClient>,
 	) -> bool {
 		true
diff --git a/bridges/relays/messages/src/relay_strategy/enforcement_strategy.rs b/bridges/relays/messages/src/relay_strategy/enforcement_strategy.rs
index 042c05bec00aded4585b7b26dd0f3a144e62d766..1e9ef5bdbf818e698180e77cc9a84f86da9ee2d6 100644
--- a/bridges/relays/messages/src/relay_strategy/enforcement_strategy.rs
+++ b/bridges/relays/messages/src/relay_strategy/enforcement_strategy.rs
@@ -49,7 +49,7 @@ impl<Strategy: RelayStrategy> EnforcementStrategy<Strategy> {
 		SourceClient: MessageLaneSourceClient<P>,
 		TargetClient: MessageLaneTargetClient<P>,
 	>(
-		&self,
+		&mut self,
 		reference: RelayMessagesBatchReference<P, SourceClient, TargetClient>,
 	) -> Option<MessageNonce> {
 		let mut hard_selected_count = 0;
diff --git a/bridges/relays/messages/src/relay_strategy/mix_strategy.rs b/bridges/relays/messages/src/relay_strategy/mix_strategy.rs
index a267d8ca5f5a86e6dfcdfe6c96f88c8b7abc4f70..4ac7fe1d0ed0698a033eebe07c186e663a2d8261 100644
--- a/bridges/relays/messages/src/relay_strategy/mix_strategy.rs
+++ b/bridges/relays/messages/src/relay_strategy/mix_strategy.rs
@@ -47,7 +47,7 @@ impl RelayStrategy for MixStrategy {
 		SourceClient: MessageLaneSourceClient<P>,
 		TargetClient: MessageLaneTargetClient<P>,
 	>(
-		&self,
+		&mut self,
 		reference: &mut RelayReference<P, SourceClient, TargetClient>,
 	) -> bool {
 		match self.relayer_mode {
diff --git a/bridges/relays/messages/src/relay_strategy/mod.rs b/bridges/relays/messages/src/relay_strategy/mod.rs
index 3e4eef8975dd866b2eda0cec61c46752f5cd21e2..d902bd93e5cf98c65b6bda47126385c5555dfb2b 100644
--- a/bridges/relays/messages/src/relay_strategy/mod.rs
+++ b/bridges/relays/messages/src/relay_strategy/mod.rs
@@ -52,7 +52,7 @@ pub trait RelayStrategy: 'static + Clone + Send + Sync {
 		SourceClient: MessageLaneSourceClient<P>,
 		TargetClient: MessageLaneTargetClient<P>,
 	>(
-		&self,
+		&mut self,
 		reference: &mut RelayReference<P, SourceClient, TargetClient>,
 	) -> bool;
 }
diff --git a/bridges/relays/messages/src/relay_strategy/rational_strategy.rs b/bridges/relays/messages/src/relay_strategy/rational_strategy.rs
index dc408ffd49e258c32dcfde6ac402aa6814fb2fec..fd0a1ffafc8b91b860c99bf8fc44f93ec39d6cea 100644
--- a/bridges/relays/messages/src/relay_strategy/rational_strategy.rs
+++ b/bridges/relays/messages/src/relay_strategy/rational_strategy.rs
@@ -41,7 +41,7 @@ impl RelayStrategy for RationalStrategy {
 		SourceClient: MessageLaneSourceClient<P>,
 		TargetClient: MessageLaneTargetClient<P>,
 	>(
-		&self,
+		&mut self,
 		reference: &mut RelayReference<P, SourceClient, TargetClient>,
 	) -> bool {
 		// technically, multiple confirmations will be delivered in a single transaction,