diff --git a/bridges/primitives/chain-asset-hub-rococo/Cargo.toml b/bridges/chains/chain-asset-hub-rococo/Cargo.toml
similarity index 87%
rename from bridges/primitives/chain-asset-hub-rococo/Cargo.toml
rename to bridges/chains/chain-asset-hub-rococo/Cargo.toml
index 08be719bfd98c3a69af920f9e0c7b93f454ff08d..336e2b4d4022f3a98b0da2f3aa40f54aa0b95115 100644
--- a/bridges/primitives/chain-asset-hub-rococo/Cargo.toml
+++ b/bridges/chains/chain-asset-hub-rococo/Cargo.toml
@@ -17,7 +17,7 @@ scale-info = { version = "2.11.0", default-features = false, features = ["derive
 frame-support = { git = "https://github.com/paritytech/polkadot-sdk", branch = "master", default-features = false }
 
 # Bridge Dependencies
-bp-xcm-bridge-hub-router = { path = "../xcm-bridge-hub-router", default-features = false }
+bp-xcm-bridge-hub-router = { path = "../../primitives/xcm-bridge-hub-router", default-features = false }
 
 [features]
 default = ["std"]
diff --git a/bridges/primitives/chain-asset-hub-rococo/src/lib.rs b/bridges/chains/chain-asset-hub-rococo/src/lib.rs
similarity index 100%
rename from bridges/primitives/chain-asset-hub-rococo/src/lib.rs
rename to bridges/chains/chain-asset-hub-rococo/src/lib.rs
diff --git a/bridges/primitives/chain-asset-hub-westend/Cargo.toml b/bridges/chains/chain-asset-hub-westend/Cargo.toml
similarity index 87%
rename from bridges/primitives/chain-asset-hub-westend/Cargo.toml
rename to bridges/chains/chain-asset-hub-westend/Cargo.toml
index d8245c7a89586c5261f8f5b5f808e807c9cad55b..99b6c26e2638bea1bb837e9e929e9755683c5568 100644
--- a/bridges/primitives/chain-asset-hub-westend/Cargo.toml
+++ b/bridges/chains/chain-asset-hub-westend/Cargo.toml
@@ -17,7 +17,7 @@ scale-info = { version = "2.11.0", default-features = false, features = ["derive
 frame-support = { git = "https://github.com/paritytech/polkadot-sdk", branch = "master", default-features = false }
 
 # Bridge Dependencies
-bp-xcm-bridge-hub-router = { path = "../xcm-bridge-hub-router", default-features = false }
+bp-xcm-bridge-hub-router = { path = "../../primitives/xcm-bridge-hub-router", default-features = false }
 
 [features]
 default = ["std"]
diff --git a/bridges/primitives/chain-asset-hub-westend/src/lib.rs b/bridges/chains/chain-asset-hub-westend/src/lib.rs
similarity index 100%
rename from bridges/primitives/chain-asset-hub-westend/src/lib.rs
rename to bridges/chains/chain-asset-hub-westend/src/lib.rs
diff --git a/bridges/primitives/chain-bridge-hub-cumulus/Cargo.toml b/bridges/chains/chain-bridge-hub-cumulus/Cargo.toml
similarity index 100%
rename from bridges/primitives/chain-bridge-hub-cumulus/Cargo.toml
rename to bridges/chains/chain-bridge-hub-cumulus/Cargo.toml
diff --git a/bridges/primitives/chain-bridge-hub-cumulus/src/lib.rs b/bridges/chains/chain-bridge-hub-cumulus/src/lib.rs
similarity index 100%
rename from bridges/primitives/chain-bridge-hub-cumulus/src/lib.rs
rename to bridges/chains/chain-bridge-hub-cumulus/src/lib.rs
diff --git a/bridges/primitives/chain-bridge-hub-kusama/Cargo.toml b/bridges/chains/chain-bridge-hub-kusama/Cargo.toml
similarity index 100%
rename from bridges/primitives/chain-bridge-hub-kusama/Cargo.toml
rename to bridges/chains/chain-bridge-hub-kusama/Cargo.toml
diff --git a/bridges/primitives/chain-bridge-hub-kusama/src/lib.rs b/bridges/chains/chain-bridge-hub-kusama/src/lib.rs
similarity index 100%
rename from bridges/primitives/chain-bridge-hub-kusama/src/lib.rs
rename to bridges/chains/chain-bridge-hub-kusama/src/lib.rs
diff --git a/bridges/primitives/chain-bridge-hub-polkadot/Cargo.toml b/bridges/chains/chain-bridge-hub-polkadot/Cargo.toml
similarity index 100%
rename from bridges/primitives/chain-bridge-hub-polkadot/Cargo.toml
rename to bridges/chains/chain-bridge-hub-polkadot/Cargo.toml
diff --git a/bridges/primitives/chain-bridge-hub-polkadot/src/lib.rs b/bridges/chains/chain-bridge-hub-polkadot/src/lib.rs
similarity index 100%
rename from bridges/primitives/chain-bridge-hub-polkadot/src/lib.rs
rename to bridges/chains/chain-bridge-hub-polkadot/src/lib.rs
diff --git a/bridges/primitives/chain-bridge-hub-rococo/Cargo.toml b/bridges/chains/chain-bridge-hub-rococo/Cargo.toml
similarity index 100%
rename from bridges/primitives/chain-bridge-hub-rococo/Cargo.toml
rename to bridges/chains/chain-bridge-hub-rococo/Cargo.toml
diff --git a/bridges/chains/chain-bridge-hub-rococo/src/lib.rs b/bridges/chains/chain-bridge-hub-rococo/src/lib.rs
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c4e697fbe9526b85c7f10cf739c6893d50190fe9 100644
--- a/bridges/chains/chain-bridge-hub-rococo/src/lib.rs
+++ b/bridges/chains/chain-bridge-hub-rococo/src/lib.rs
@@ -0,0 +1,111 @@
+// Copyright (C) Parity Technologies (UK) Ltd.
+// This file is part of Parity Bridges Common.
+
+// Parity Bridges Common is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Parity Bridges Common is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Parity Bridges Common.  If not, see <http://www.gnu.org/licenses/>.
+
+//! Module with configuration which reflects BridgeHubRococo runtime setup (AccountId, Headers,
+//! Hashes...)
+
+#![warn(missing_docs)]
+#![cfg_attr(not(feature = "std"), no_std)]
+
+pub use bp_bridge_hub_cumulus::*;
+use bp_messages::*;
+use bp_runtime::{
+	decl_bridge_finality_runtime_apis, decl_bridge_messages_runtime_apis, Chain, ChainId, Parachain,
+};
+use frame_support::dispatch::DispatchClass;
+use sp_runtime::{MultiAddress, MultiSigner, RuntimeDebug};
+
+/// BridgeHubRococo parachain.
+#[derive(RuntimeDebug)]
+pub struct BridgeHubRococo;
+
+impl Chain for BridgeHubRococo {
+	const ID: ChainId = *b"bhro";
+
+	type BlockNumber = BlockNumber;
+	type Hash = Hash;
+	type Hasher = Hasher;
+	type Header = Header;
+
+	type AccountId = AccountId;
+	type Balance = Balance;
+	type Nonce = Nonce;
+	type Signature = Signature;
+
+	fn max_extrinsic_size() -> u32 {
+		*BlockLength::get().max.get(DispatchClass::Normal)
+	}
+
+	fn max_extrinsic_weight() -> Weight {
+		BlockWeightsForAsyncBacking::get()
+			.get(DispatchClass::Normal)
+			.max_extrinsic
+			.unwrap_or(Weight::MAX)
+	}
+}
+
+impl Parachain for BridgeHubRococo {
+	const PARACHAIN_ID: u32 = BRIDGE_HUB_ROCOCO_PARACHAIN_ID;
+}
+
+impl ChainWithMessages for BridgeHubRococo {
+	const WITH_CHAIN_MESSAGES_PALLET_NAME: &'static str =
+		WITH_BRIDGE_HUB_ROCOCO_MESSAGES_PALLET_NAME;
+
+	const MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX: MessageNonce =
+		MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX;
+	const MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX: MessageNonce =
+		MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX;
+}
+
+/// Public key of the chain account that may be used to verify signatures.
+pub type AccountSigner = MultiSigner;
+
+/// The address format for describing accounts.
+pub type Address = MultiAddress<AccountId, ()>;
+
+/// Identifier of BridgeHubRococo in the Rococo relay chain.
+pub const BRIDGE_HUB_ROCOCO_PARACHAIN_ID: u32 = 1013;
+
+/// Name of the With-BridgeHubRococo messages pallet instance that is deployed at bridged chains.
+pub const WITH_BRIDGE_HUB_ROCOCO_MESSAGES_PALLET_NAME: &str = "BridgeRococoMessages";
+
+/// Name of the With-BridgeHubRococo bridge-relayers pallet instance that is deployed at bridged
+/// chains.
+pub const WITH_BRIDGE_HUB_ROCOCO_RELAYERS_PALLET_NAME: &str = "BridgeRelayers";
+
+/// Pallet index of `BridgeWestendMessages: pallet_bridge_messages::<Instance3>`.
+pub const WITH_BRIDGE_ROCOCO_TO_WESTEND_MESSAGES_PALLET_INDEX: u8 = 51;
+/// Pallet index of `BridgePolkadotBulletinMessages: pallet_bridge_messages::<Instance4>`.
+pub const WITH_BRIDGE_ROCOCO_TO_BULLETIN_MESSAGES_PALLET_INDEX: u8 = 61;
+
+decl_bridge_finality_runtime_apis!(bridge_hub_rococo);
+decl_bridge_messages_runtime_apis!(bridge_hub_rococo);
+
+frame_support::parameter_types! {
+	/// The XCM fee that is paid for executing XCM program (with `ExportMessage` instruction) at the Rococo
+	/// BridgeHub.
+	/// (initially was calculated by test `BridgeHubRococo::can_calculate_weight_for_paid_export_message_with_reserve_transfer` + `33%`)
+	pub const BridgeHubRococoBaseXcmFeeInRocs: u128 = 59_034_266;
+
+	/// Transaction fee that is paid at the Rococo BridgeHub for delivering single inbound message.
+	/// (initially was calculated by test `BridgeHubRococo::can_calculate_fee_for_complex_message_delivery_transaction` + `33%`)
+	pub const BridgeHubRococoBaseDeliveryFeeInRocs: u128 = 5_651_581_649;
+
+	/// Transaction fee that is paid at the Rococo BridgeHub for delivering single outbound message confirmation.
+	/// (initially was calculated by test `BridgeHubRococo::can_calculate_fee_for_complex_message_confirmation_transaction` + `33%`)
+	pub const BridgeHubRococoBaseConfirmationFeeInRocs: u128 = 5_380_829_647;
+}
diff --git a/bridges/primitives/chain-bridge-hub-westend/Cargo.toml b/bridges/chains/chain-bridge-hub-westend/Cargo.toml
similarity index 100%
rename from bridges/primitives/chain-bridge-hub-westend/Cargo.toml
rename to bridges/chains/chain-bridge-hub-westend/Cargo.toml
diff --git a/bridges/primitives/chain-bridge-hub-westend/src/lib.rs b/bridges/chains/chain-bridge-hub-westend/src/lib.rs
similarity index 100%
rename from bridges/primitives/chain-bridge-hub-westend/src/lib.rs
rename to bridges/chains/chain-bridge-hub-westend/src/lib.rs
diff --git a/bridges/primitives/chain-kusama/Cargo.toml b/bridges/chains/chain-kusama/Cargo.toml
similarity index 75%
rename from bridges/primitives/chain-kusama/Cargo.toml
rename to bridges/chains/chain-kusama/Cargo.toml
index 465acf121d408ac60d13dad1e6e12ffd73f01327..56a4386afb8f3ef85b770f6d8409f4cd1bb19e47 100644
--- a/bridges/primitives/chain-kusama/Cargo.toml
+++ b/bridges/chains/chain-kusama/Cargo.toml
@@ -13,9 +13,9 @@ workspace = true
 
 # Bridge Dependencies
 
-bp-header-chain = { path = "../header-chain", default-features = false }
-bp-polkadot-core = { path = "../polkadot-core", default-features = false }
-bp-runtime = { path = "../runtime", default-features = false }
+bp-header-chain = { path = "../../primitives/header-chain", default-features = false }
+bp-polkadot-core = { path = "../../primitives/polkadot-core", default-features = false }
+bp-runtime = { path = "../../primitives/runtime", default-features = false }
 
 # Substrate Based Dependencies
 
diff --git a/bridges/primitives/chain-kusama/src/lib.rs b/bridges/chains/chain-kusama/src/lib.rs
similarity index 100%
rename from bridges/primitives/chain-kusama/src/lib.rs
rename to bridges/chains/chain-kusama/src/lib.rs
diff --git a/bridges/primitives/chain-polkadot-bulletin/Cargo.toml b/bridges/chains/chain-polkadot-bulletin/Cargo.toml
similarity index 80%
rename from bridges/primitives/chain-polkadot-bulletin/Cargo.toml
rename to bridges/chains/chain-polkadot-bulletin/Cargo.toml
index 797a893b21c39366b38082e73c6f0f034e303e44..1e2bbaf6b8af01999b7f5e685647b5dd5671ea47 100644
--- a/bridges/primitives/chain-polkadot-bulletin/Cargo.toml
+++ b/bridges/chains/chain-polkadot-bulletin/Cargo.toml
@@ -15,10 +15,10 @@ scale-info = { version = "2.11.0", default-features = false, features = ["derive
 
 # Bridge Dependencies
 
-bp-header-chain = { path = "../header-chain", default-features = false }
-bp-messages = { path = "../messages", default-features = false }
-bp-polkadot-core = { path = "../polkadot-core", default-features = false }
-bp-runtime = { path = "../runtime", default-features = false }
+bp-header-chain = { path = "../../primitives/header-chain", default-features = false }
+bp-messages = { path = "../../primitives/messages", default-features = false }
+bp-polkadot-core = { path = "../../primitives/polkadot-core", default-features = false }
+bp-runtime = { path = "../../primitives/runtime", default-features = false }
 
 # Substrate Based Dependencies
 
diff --git a/bridges/primitives/chain-polkadot-bulletin/src/lib.rs b/bridges/chains/chain-polkadot-bulletin/src/lib.rs
similarity index 100%
rename from bridges/primitives/chain-polkadot-bulletin/src/lib.rs
rename to bridges/chains/chain-polkadot-bulletin/src/lib.rs
diff --git a/bridges/primitives/chain-polkadot/Cargo.toml b/bridges/chains/chain-polkadot/Cargo.toml
similarity index 75%
rename from bridges/primitives/chain-polkadot/Cargo.toml
rename to bridges/chains/chain-polkadot/Cargo.toml
index 20080a7901b6996dd516ad38d73771b975a827d3..5faee3bd34ad46f87d0bbfe9a6616438e3099e4a 100644
--- a/bridges/primitives/chain-polkadot/Cargo.toml
+++ b/bridges/chains/chain-polkadot/Cargo.toml
@@ -13,9 +13,9 @@ workspace = true
 
 # Bridge Dependencies
 
-bp-header-chain = { path = "../header-chain", default-features = false }
-bp-polkadot-core = { path = "../polkadot-core", default-features = false }
-bp-runtime = { path = "../runtime", default-features = false }
+bp-header-chain = { path = "../../primitives/header-chain", default-features = false }
+bp-polkadot-core = { path = "../../primitives/polkadot-core", default-features = false }
+bp-runtime = { path = "../../primitives/runtime", default-features = false }
 
 # Substrate Based Dependencies
 
diff --git a/bridges/primitives/chain-polkadot/src/lib.rs b/bridges/chains/chain-polkadot/src/lib.rs
similarity index 100%
rename from bridges/primitives/chain-polkadot/src/lib.rs
rename to bridges/chains/chain-polkadot/src/lib.rs
diff --git a/bridges/primitives/chain-rococo/Cargo.toml b/bridges/chains/chain-rococo/Cargo.toml
similarity index 75%
rename from bridges/primitives/chain-rococo/Cargo.toml
rename to bridges/chains/chain-rococo/Cargo.toml
index 459ee6f9f0517d27487a9ae9edd6fa34b10ba6da..401611bebbe473ac6aba146191cafe07e5e7f122 100644
--- a/bridges/primitives/chain-rococo/Cargo.toml
+++ b/bridges/chains/chain-rococo/Cargo.toml
@@ -13,9 +13,9 @@ workspace = true
 
 # Bridge Dependencies
 
-bp-header-chain = { path = "../header-chain", default-features = false }
-bp-polkadot-core = { path = "../polkadot-core", default-features = false }
-bp-runtime = { path = "../runtime", default-features = false }
+bp-header-chain = { path = "../../primitives/header-chain", default-features = false }
+bp-polkadot-core = { path = "../../primitives/polkadot-core", default-features = false }
+bp-runtime = { path = "../../primitives/runtime", default-features = false }
 
 # Substrate Based Dependencies
 
diff --git a/bridges/primitives/chain-rococo/src/lib.rs b/bridges/chains/chain-rococo/src/lib.rs
similarity index 100%
rename from bridges/primitives/chain-rococo/src/lib.rs
rename to bridges/chains/chain-rococo/src/lib.rs
diff --git a/bridges/primitives/chain-westend/Cargo.toml b/bridges/chains/chain-westend/Cargo.toml
similarity index 75%
rename from bridges/primitives/chain-westend/Cargo.toml
rename to bridges/chains/chain-westend/Cargo.toml
index 4710da7bb335d2c883e396af993bcda34b4424ec..d697e2b36c42cf194df96a33978afd5a42c0990b 100644
--- a/bridges/primitives/chain-westend/Cargo.toml
+++ b/bridges/chains/chain-westend/Cargo.toml
@@ -13,9 +13,9 @@ workspace = true
 
 # Bridge Dependencies
 
-bp-header-chain = { path = "../header-chain", default-features = false }
-bp-polkadot-core = { path = "../polkadot-core", default-features = false }
-bp-runtime = { path = "../runtime", default-features = false }
+bp-header-chain = { path = "../../primitives/header-chain", default-features = false }
+bp-polkadot-core = { path = "../../primitives/polkadot-core", default-features = false }
+bp-runtime = { path = "../../primitives/runtime", default-features = false }
 
 # Substrate Based Dependencies
 
diff --git a/bridges/primitives/chain-westend/src/lib.rs b/bridges/chains/chain-westend/src/lib.rs
similarity index 100%
rename from bridges/primitives/chain-westend/src/lib.rs
rename to bridges/chains/chain-westend/src/lib.rs
diff --git a/bridges/primitives/chain-bridge-hub-rococo/src/lib.rs b/bridges/primitives/chain-bridge-hub-rococo/src/lib.rs
deleted file mode 100644
index c4e697fbe9526b85c7f10cf739c6893d50190fe9..0000000000000000000000000000000000000000
--- a/bridges/primitives/chain-bridge-hub-rococo/src/lib.rs
+++ /dev/null
@@ -1,111 +0,0 @@
-// Copyright (C) Parity Technologies (UK) Ltd.
-// This file is part of Parity Bridges Common.
-
-// Parity Bridges Common is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Parity Bridges Common is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Parity Bridges Common.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Module with configuration which reflects BridgeHubRococo runtime setup (AccountId, Headers,
-//! Hashes...)
-
-#![warn(missing_docs)]
-#![cfg_attr(not(feature = "std"), no_std)]
-
-pub use bp_bridge_hub_cumulus::*;
-use bp_messages::*;
-use bp_runtime::{
-	decl_bridge_finality_runtime_apis, decl_bridge_messages_runtime_apis, Chain, ChainId, Parachain,
-};
-use frame_support::dispatch::DispatchClass;
-use sp_runtime::{MultiAddress, MultiSigner, RuntimeDebug};
-
-/// BridgeHubRococo parachain.
-#[derive(RuntimeDebug)]
-pub struct BridgeHubRococo;
-
-impl Chain for BridgeHubRococo {
-	const ID: ChainId = *b"bhro";
-
-	type BlockNumber = BlockNumber;
-	type Hash = Hash;
-	type Hasher = Hasher;
-	type Header = Header;
-
-	type AccountId = AccountId;
-	type Balance = Balance;
-	type Nonce = Nonce;
-	type Signature = Signature;
-
-	fn max_extrinsic_size() -> u32 {
-		*BlockLength::get().max.get(DispatchClass::Normal)
-	}
-
-	fn max_extrinsic_weight() -> Weight {
-		BlockWeightsForAsyncBacking::get()
-			.get(DispatchClass::Normal)
-			.max_extrinsic
-			.unwrap_or(Weight::MAX)
-	}
-}
-
-impl Parachain for BridgeHubRococo {
-	const PARACHAIN_ID: u32 = BRIDGE_HUB_ROCOCO_PARACHAIN_ID;
-}
-
-impl ChainWithMessages for BridgeHubRococo {
-	const WITH_CHAIN_MESSAGES_PALLET_NAME: &'static str =
-		WITH_BRIDGE_HUB_ROCOCO_MESSAGES_PALLET_NAME;
-
-	const MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX: MessageNonce =
-		MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX;
-	const MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX: MessageNonce =
-		MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX;
-}
-
-/// Public key of the chain account that may be used to verify signatures.
-pub type AccountSigner = MultiSigner;
-
-/// The address format for describing accounts.
-pub type Address = MultiAddress<AccountId, ()>;
-
-/// Identifier of BridgeHubRococo in the Rococo relay chain.
-pub const BRIDGE_HUB_ROCOCO_PARACHAIN_ID: u32 = 1013;
-
-/// Name of the With-BridgeHubRococo messages pallet instance that is deployed at bridged chains.
-pub const WITH_BRIDGE_HUB_ROCOCO_MESSAGES_PALLET_NAME: &str = "BridgeRococoMessages";
-
-/// Name of the With-BridgeHubRococo bridge-relayers pallet instance that is deployed at bridged
-/// chains.
-pub const WITH_BRIDGE_HUB_ROCOCO_RELAYERS_PALLET_NAME: &str = "BridgeRelayers";
-
-/// Pallet index of `BridgeWestendMessages: pallet_bridge_messages::<Instance3>`.
-pub const WITH_BRIDGE_ROCOCO_TO_WESTEND_MESSAGES_PALLET_INDEX: u8 = 51;
-/// Pallet index of `BridgePolkadotBulletinMessages: pallet_bridge_messages::<Instance4>`.
-pub const WITH_BRIDGE_ROCOCO_TO_BULLETIN_MESSAGES_PALLET_INDEX: u8 = 61;
-
-decl_bridge_finality_runtime_apis!(bridge_hub_rococo);
-decl_bridge_messages_runtime_apis!(bridge_hub_rococo);
-
-frame_support::parameter_types! {
-	/// The XCM fee that is paid for executing XCM program (with `ExportMessage` instruction) at the Rococo
-	/// BridgeHub.
-	/// (initially was calculated by test `BridgeHubRococo::can_calculate_weight_for_paid_export_message_with_reserve_transfer` + `33%`)
-	pub const BridgeHubRococoBaseXcmFeeInRocs: u128 = 59_034_266;
-
-	/// Transaction fee that is paid at the Rococo BridgeHub for delivering single inbound message.
-	/// (initially was calculated by test `BridgeHubRococo::can_calculate_fee_for_complex_message_delivery_transaction` + `33%`)
-	pub const BridgeHubRococoBaseDeliveryFeeInRocs: u128 = 5_651_581_649;
-
-	/// Transaction fee that is paid at the Rococo BridgeHub for delivering single outbound message confirmation.
-	/// (initially was calculated by test `BridgeHubRococo::can_calculate_fee_for_complex_message_confirmation_transaction` + `33%`)
-	pub const BridgeHubRococoBaseConfirmationFeeInRocs: u128 = 5_380_829_647;
-}
diff --git a/bridges/relays/bin-substrate/Cargo.toml b/bridges/relays/bin-substrate/Cargo.toml
index 032fc8ce741e87af7000a3ba0e3c2a8e5bc42473..6c0ac1da6fc580cf0f47b32367be44017478edc5 100644
--- a/bridges/relays/bin-substrate/Cargo.toml
+++ b/bridges/relays/bin-substrate/Cargo.toml
@@ -26,15 +26,15 @@ signal-hook-async-std = "0.2.2"
 strum = { version = "0.26.2", features = ["derive"] }
 
 # Bridge dependencies
-bp-bridge-hub-polkadot = { path = "../../primitives/chain-bridge-hub-polkadot" }
-bp-bridge-hub-rococo = { path = "../../primitives/chain-bridge-hub-rococo" }
+bp-bridge-hub-polkadot = { path = "../../chains/chain-bridge-hub-polkadot" }
+bp-bridge-hub-rococo = { path = "../../chains/chain-bridge-hub-rococo" }
 bp-header-chain = { path = "../../primitives/header-chain" }
 bp-messages = { path = "../../primitives/messages" }
 bp-parachains = { path = "../../primitives/parachains" }
-bp-polkadot-bulletin = { path = "../../primitives/chain-polkadot-bulletin" }
-bp-polkadot = { path = "../../primitives/chain-polkadot" }
+bp-polkadot-bulletin = { path = "../../chains/chain-polkadot-bulletin" }
+bp-polkadot = { path = "../../chains/chain-polkadot" }
 bp-polkadot-core = { path = "../../primitives/polkadot-core" }
-bp-rococo = { path = "../../primitives/chain-rococo" }
+bp-rococo = { path = "../../chains/chain-rococo" }
 bp-runtime = { path = "../../primitives/runtime" }
 bridge-runtime-common = { path = "../../bin/runtime-common" }
 pallet-bridge-parachains = { path = "../../modules/parachains" }
diff --git a/bridges/relays/client-bridge-hub-kusama/Cargo.toml b/bridges/relays/client-bridge-hub-kusama/Cargo.toml
index 6e41bb3fcee8ed3a0aa3c2c211245158405d0aaf..a02dc26a0a8d314da92199d6a8ac7d40222f0ef9 100644
--- a/bridges/relays/client-bridge-hub-kusama/Cargo.toml
+++ b/bridges/relays/client-bridge-hub-kusama/Cargo.toml
@@ -16,11 +16,11 @@ subxt = { version = "0.32.1", default-features = false, features = ["native"] }
 
 # Bridge dependencies
 
-bp-bridge-hub-kusama = { path = "../../primitives/chain-bridge-hub-kusama" }
+bp-bridge-hub-kusama = { path = "../../chains/chain-bridge-hub-kusama" }
 bp-header-chain = { path = "../../primitives/header-chain" }
 bp-messages = { path = "../../primitives/messages" }
 bp-parachains = { path = "../../primitives/parachains" }
-bp-polkadot = { path = "../../primitives/chain-polkadot" }
+bp-polkadot = { path = "../../chains/chain-polkadot" }
 bp-polkadot-core = { path = "../../primitives/polkadot-core" }
 bridge-runtime-common = { path = "../../bin/runtime-common" }
 relay-substrate-client = { path = "../client-substrate" }
diff --git a/bridges/relays/client-bridge-hub-polkadot/Cargo.toml b/bridges/relays/client-bridge-hub-polkadot/Cargo.toml
index f5fc69d02be214cbf2503c19090788cd080ffd9f..abfd5bae4f025ee880e8987ff3f9d9ac897fc026 100644
--- a/bridges/relays/client-bridge-hub-polkadot/Cargo.toml
+++ b/bridges/relays/client-bridge-hub-polkadot/Cargo.toml
@@ -15,13 +15,13 @@ subxt = { version = "0.32.1", default-features = false, features = ["native"] }
 
 # Bridge dependencies
 
-bp-bridge-hub-polkadot = { path = "../../primitives/chain-bridge-hub-polkadot" }
+bp-bridge-hub-polkadot = { path = "../../chains/chain-bridge-hub-polkadot" }
 bp-header-chain = { path = "../../primitives/header-chain" }
 bp-messages = { path = "../../primitives/messages" }
 bp-parachains = { path = "../../primitives/parachains" }
-bp-polkadot = { path = "../../primitives/chain-polkadot" }
+bp-polkadot = { path = "../../chains/chain-polkadot" }
 bp-polkadot-core = { path = "../../primitives/polkadot-core" }
-bp-kusama = { path = "../../primitives/chain-kusama" }
+bp-kusama = { path = "../../chains/chain-kusama" }
 bp-runtime = { path = "../../primitives/runtime" }
 bridge-runtime-common = { path = "../../bin/runtime-common" }
 relay-substrate-client = { path = "../client-substrate" }
diff --git a/bridges/relays/client-bridge-hub-rococo/Cargo.toml b/bridges/relays/client-bridge-hub-rococo/Cargo.toml
index efccfa5fb60e47e1370bd33ef1e0176e9e154ea1..70d65ac19453c45d1781da83c48ae74df218a41e 100644
--- a/bridges/relays/client-bridge-hub-rococo/Cargo.toml
+++ b/bridges/relays/client-bridge-hub-rococo/Cargo.toml
@@ -15,7 +15,7 @@ subxt = { version = "0.32.1", default-features = false, features = ["native"] }
 
 # Bridge dependencies
 
-bp-bridge-hub-rococo = { path = "../../primitives/chain-bridge-hub-rococo" }
+bp-bridge-hub-rococo = { path = "../../chains/chain-bridge-hub-rococo" }
 bp-header-chain = { path = "../../primitives/header-chain" }
 bp-messages = { path = "../../primitives/messages" }
 bp-parachains = { path = "../../primitives/parachains" }
diff --git a/bridges/relays/client-bridge-hub-westend/Cargo.toml b/bridges/relays/client-bridge-hub-westend/Cargo.toml
index 188839e2dba46cc4cf79b3ef71d8731efeca5e28..c65c7ec0014b8f205657c9142afc0b1c2626152a 100644
--- a/bridges/relays/client-bridge-hub-westend/Cargo.toml
+++ b/bridges/relays/client-bridge-hub-westend/Cargo.toml
@@ -15,12 +15,12 @@ subxt = { version = "0.32.1", default-features = false, features = ["native"] }
 
 # Bridge dependencies
 
-bp-bridge-hub-westend = { path = "../../primitives/chain-bridge-hub-westend" }
+bp-bridge-hub-westend = { path = "../../chains/chain-bridge-hub-westend" }
 bp-header-chain = { path = "../../primitives/header-chain" }
 bp-messages = { path = "../../primitives/messages" }
 bp-parachains = { path = "../../primitives/parachains" }
 bp-polkadot-core = { path = "../../primitives/polkadot-core" }
-bp-rococo = { path = "../../primitives/chain-rococo" }
+bp-rococo = { path = "../../chains/chain-rococo" }
 
 bridge-runtime-common = { path = "../../bin/runtime-common" }
 relay-substrate-client = { path = "../client-substrate" }
diff --git a/bridges/relays/client-kusama/Cargo.toml b/bridges/relays/client-kusama/Cargo.toml
index 6d3a71b3855e48bf74917c60d222af4daf5225b4..c459f347af1ed9ef718622fa70b2fa80b8b7bce9 100644
--- a/bridges/relays/client-kusama/Cargo.toml
+++ b/bridges/relays/client-kusama/Cargo.toml
@@ -15,7 +15,7 @@ subxt = { version = "0.32.1", default-features = false, features = ["native"] }
 
 # Bridge dependencies
 
-bp-kusama = { path = "../../primitives/chain-kusama" }
+bp-kusama = { path = "../../chains/chain-kusama" }
 bp-polkadot-core = { path = "../../primitives/polkadot-core" }
 bp-runtime = { path = "../../primitives/runtime" }
 
diff --git a/bridges/relays/client-polkadot-bulletin/Cargo.toml b/bridges/relays/client-polkadot-bulletin/Cargo.toml
index 2160a35fb8ffeadc5ced728fd0a0da43a6c0d046..842b53c48ef25c3ca6c91cf549fedfdf2958f788 100644
--- a/bridges/relays/client-polkadot-bulletin/Cargo.toml
+++ b/bridges/relays/client-polkadot-bulletin/Cargo.toml
@@ -18,7 +18,7 @@ subxt = { version = "0.32.1", default-features = false, features = ["native"] }
 bp-header-chain = { path = "../../primitives/header-chain" }
 bp-messages = { path = "../../primitives/messages" }
 bp-polkadot-core = { path = "../../primitives/polkadot-core" }
-bp-polkadot-bulletin = { path = "../../primitives/chain-polkadot-bulletin" }
+bp-polkadot-bulletin = { path = "../../chains/chain-polkadot-bulletin" }
 bp-runtime = { path = "../../primitives/runtime" }
 bridge-runtime-common = { path = "../../bin/runtime-common" }
 relay-substrate-client = { path = "../client-substrate" }
diff --git a/bridges/relays/client-polkadot/Cargo.toml b/bridges/relays/client-polkadot/Cargo.toml
index daa3423bbd42451466870527e17ba35ba40a818b..19cf9f9335bc5c4eb5d2459b35aba52df4ec13ef 100644
--- a/bridges/relays/client-polkadot/Cargo.toml
+++ b/bridges/relays/client-polkadot/Cargo.toml
@@ -15,7 +15,7 @@ subxt = { version = "0.32.1", default-features = false, features = ["native"] }
 
 # Bridge dependencies
 
-bp-polkadot = { path = "../../primitives/chain-polkadot" }
+bp-polkadot = { path = "../../chains/chain-polkadot" }
 bp-polkadot-core = { path = "../../primitives/polkadot-core" }
 bp-runtime = { path = "../../primitives/runtime" }
 
diff --git a/bridges/relays/client-rococo/Cargo.toml b/bridges/relays/client-rococo/Cargo.toml
index 7a6b7d3bae224d113b6e9024a414b31dd0813b00..5e847600f466008d97f99e2e77150f9787bcc1ca 100644
--- a/bridges/relays/client-rococo/Cargo.toml
+++ b/bridges/relays/client-rococo/Cargo.toml
@@ -16,7 +16,7 @@ subxt = { version = "0.32.1", default-features = false, features = ["native"] }
 # Bridge dependencies
 
 bp-polkadot-core = { path = "../../primitives/polkadot-core" }
-bp-rococo = { path = "../../primitives/chain-rococo" }
+bp-rococo = { path = "../../chains/chain-rococo" }
 
 relay-substrate-client = { path = "../client-substrate" }
 relay-utils = { path = "../utils" }
diff --git a/bridges/relays/client-westend/Cargo.toml b/bridges/relays/client-westend/Cargo.toml
index 2c9aacc16e69b33f6b367a46be66e1daaf8414c9..8b56e51d084d21fb97683605588f2e025cc5a920 100644
--- a/bridges/relays/client-westend/Cargo.toml
+++ b/bridges/relays/client-westend/Cargo.toml
@@ -17,7 +17,7 @@ subxt = { version = "0.32.1", default-features = false, features = ["native"] }
 
 bp-polkadot-core = { path = "../../primitives/polkadot-core" }
 bp-runtime = { path = "../../primitives/runtime" }
-bp-westend = { path = "../../primitives/chain-westend" }
+bp-westend = { path = "../../chains/chain-westend" }
 
 relay-substrate-client = { path = "../client-substrate" }
 relay-utils = { path = "../utils" }
diff --git a/bridges/relays/lib-substrate-relay/Cargo.toml b/bridges/relays/lib-substrate-relay/Cargo.toml
index db4f37417be4a63fa8cf58f807d21584c4ececdc..db4c3a7f8875ca17355fef3e70c9791772ab715f 100644
--- a/bridges/relays/lib-substrate-relay/Cargo.toml
+++ b/bridges/relays/lib-substrate-relay/Cargo.toml
@@ -56,7 +56,7 @@ sp-consensus-grandpa = { git = "https://github.com/paritytech/polkadot-sdk", bra
 sp-runtime = { git = "https://github.com/paritytech/polkadot-sdk", branch = "master" }
 
 [dev-dependencies]
-bp-rococo = { path = "../../primitives/chain-rococo" }
+bp-rococo = { path = "../../chains/chain-rococo" }
 pallet-transaction-payment = { git = "https://github.com/paritytech/polkadot-sdk", branch = "master" }
 relay-bridge-hub-rococo-client = { path = "../client-bridge-hub-rococo" }
 relay-bridge-hub-westend-client = { path = "../client-bridge-hub-westend" }