diff --git a/bridges/bin/millau/node/Cargo.toml b/bridges/bin/millau/node/Cargo.toml
index 5c09367b362e8baafe3def9028cf18aada7a16f8..c71eb8bfe31911ebbc475f522f5fdfd87efb37ee 100644
--- a/bridges/bin/millau/node/Cargo.toml
+++ b/bridges/bin/millau/node/Cargo.toml
@@ -16,7 +16,7 @@ structopt = "0.3.21"
 # Bridge dependencies
 
 bp-messages = { path = "../../../primitives/messages" }
-bp-millau= { path = "../../../primitives/chains/millau" }
+bp-millau= { path = "../../../primitives/chain-millau" }
 bp-runtime = { path = "../../../primitives/runtime" }
 millau-runtime = { path = "../runtime" }
 pallet-bridge-messages = { path = "../../../modules/messages" }
diff --git a/bridges/bin/millau/runtime/Cargo.toml b/bridges/bin/millau/runtime/Cargo.toml
index c95328b0a91f75e165aa695f1e85bc4e1e749430..8dc08d33366af34205079e72483336a47831928b 100644
--- a/bridges/bin/millau/runtime/Cargo.toml
+++ b/bridges/bin/millau/runtime/Cargo.toml
@@ -16,14 +16,14 @@ serde = { version = "1.0.124", optional = true, features = ["derive"] }
 
 bp-header-chain = { path = "../../../primitives/header-chain", default-features = false }
 bp-messages = { path = "../../../primitives/messages", default-features = false }
-bp-millau = { path = "../../../primitives/chains/millau", default-features = false }
-bp-rialto = { path = "../../../primitives/chains/rialto", default-features = false }
+bp-millau = { path = "../../../primitives/chain-millau", default-features = false }
+bp-rialto = { path = "../../../primitives/chain-rialto", default-features = false }
 bp-runtime = { path = "../../../primitives/runtime", default-features = false }
-bp-westend = { path = "../../../primitives/chains/westend", default-features = false }
+bp-westend = { path = "../../../primitives/chain-westend", default-features = false }
 bridge-runtime-common = { path = "../../runtime-common", default-features = false }
 pallet-bridge-call-dispatch = { path = "../../../modules/call-dispatch", default-features = false }
-pallet-finality-verifier = { path = "../../../modules/finality-verifier", default-features = false }
 pallet-bridge-messages = { path = "../../../modules/messages", default-features = false }
+pallet-finality-verifier = { path = "../../../modules/finality-verifier", default-features = false }
 pallet-shift-session-manager = { path = "../../../modules/shift-session-manager", default-features = false }
 pallet-substrate-bridge = { path = "../../../modules/substrate", default-features = false }
 
diff --git a/bridges/bin/rialto/node/Cargo.toml b/bridges/bin/rialto/node/Cargo.toml
index a3bbd8c018fdf976df11dcb859409186e6514ffc..fffbe9655a4adc72c39ae9c525506d3ffaef1552 100644
--- a/bridges/bin/rialto/node/Cargo.toml
+++ b/bridges/bin/rialto/node/Cargo.toml
@@ -17,7 +17,7 @@ structopt = "0.3.21"
 
 bp-messages = { path = "../../../primitives/messages" }
 bp-runtime = { path = "../../../primitives/runtime" }
-bp-rialto = { path = "../../../primitives/chains/rialto" }
+bp-rialto = { path = "../../../primitives/chain-rialto" }
 pallet-bridge-messages = { path = "../../../modules/messages" }
 pallet-bridge-messages-rpc = { path = "../../../modules/messages/rpc" }
 rialto-runtime = { path = "../runtime" }
diff --git a/bridges/bin/rialto/runtime/Cargo.toml b/bridges/bin/rialto/runtime/Cargo.toml
index 536c90bce18233c6808a7a1667c5a344669b02e9..3824f9cbc5e5c669db41f45cd564d282115a108d 100644
--- a/bridges/bin/rialto/runtime/Cargo.toml
+++ b/bridges/bin/rialto/runtime/Cargo.toml
@@ -21,8 +21,8 @@ bp-eth-poa = { path = "../../../primitives/ethereum-poa", default-features = fal
 bp-header-chain = { path = "../../../primitives/header-chain", default-features = false }
 bp-message-dispatch = { path = "../../../primitives/message-dispatch", default-features = false }
 bp-messages = { path = "../../../primitives/messages", default-features = false }
-bp-millau = { path = "../../../primitives/chains/millau", default-features = false }
-bp-rialto = { path = "../../../primitives/chains/rialto", default-features = false }
+bp-millau = { path = "../../../primitives/chain-millau", default-features = false }
+bp-rialto = { path = "../../../primitives/chain-rialto", default-features = false }
 bp-runtime = { path = "../../../primitives/runtime", default-features = false }
 bridge-runtime-common = { path = "../../runtime-common", default-features = false }
 pallet-bridge-eth-poa = { path = "../../../modules/ethereum", default-features = false }
diff --git a/bridges/modules/messages/Cargo.toml b/bridges/modules/messages/Cargo.toml
index 19dc78af721e18952af050406b92a228d369c64b..4a75fa8181f8aede4af335a4d4e86e981fc1d9cc 100644
--- a/bridges/modules/messages/Cargo.toml
+++ b/bridges/modules/messages/Cargo.toml
@@ -15,7 +15,7 @@ serde = { version = "1.0.101", optional = true, features = ["derive"] }
 # Bridge dependencies
 
 bp-messages = { path = "../../primitives/messages", default-features = false }
-bp-rialto = { path = "../../primitives/chains/rialto", default-features = false }
+bp-rialto = { path = "../../primitives/chain-rialto", default-features = false }
 bp-runtime = { path = "../../primitives/runtime", default-features = false }
 
 # Substrate Dependencies
diff --git a/bridges/primitives/chains/kusama/Cargo.toml b/bridges/primitives/chain-kusama/Cargo.toml
similarity index 75%
rename from bridges/primitives/chains/kusama/Cargo.toml
rename to bridges/primitives/chain-kusama/Cargo.toml
index 15614a922babb5fbe9a1ed416af170239230b148..70ff3b844df07a295c098541f933c82d226cf542 100644
--- a/bridges/primitives/chains/kusama/Cargo.toml
+++ b/bridges/primitives/chain-kusama/Cargo.toml
@@ -9,9 +9,9 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 [dependencies]
 
 # Bridge Dependencies
-bp-messages = { path = "../../messages", default-features = false }
-bp-polkadot-core = { path = "../../polkadot-core", default-features = false }
-bp-runtime = { path = "../../runtime", 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 }
 
 # Substrate Based Dependencies
 sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false }
diff --git a/bridges/primitives/chains/kusama/src/lib.rs b/bridges/primitives/chain-kusama/src/lib.rs
similarity index 100%
rename from bridges/primitives/chains/kusama/src/lib.rs
rename to bridges/primitives/chain-kusama/src/lib.rs
diff --git a/bridges/primitives/chains/millau/Cargo.toml b/bridges/primitives/chain-millau/Cargo.toml
similarity index 93%
rename from bridges/primitives/chains/millau/Cargo.toml
rename to bridges/primitives/chain-millau/Cargo.toml
index ae27d2ce6287eb364de6879d9bd3cf095bf67130..67db08c208608b3f4cb2f2810ce11238267f2225 100644
--- a/bridges/primitives/chains/millau/Cargo.toml
+++ b/bridges/primitives/chain-millau/Cargo.toml
@@ -10,8 +10,8 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 
 # Bridge Dependencies
 
-bp-messages = { path = "../../messages", default-features = false }
-bp-runtime = { path = "../../runtime", default-features = false }
+bp-messages = { path = "../messages", default-features = false }
+bp-runtime = { path = "../runtime", default-features = false }
 fixed-hash = { version = "0.7.0", default-features = false }
 hash256-std-hasher = { version = "0.15.2", default-features = false }
 impl-codec = { version = "0.5.0", default-features = false }
diff --git a/bridges/primitives/chains/millau/src/lib.rs b/bridges/primitives/chain-millau/src/lib.rs
similarity index 100%
rename from bridges/primitives/chains/millau/src/lib.rs
rename to bridges/primitives/chain-millau/src/lib.rs
diff --git a/bridges/primitives/chains/millau/src/millau_hash.rs b/bridges/primitives/chain-millau/src/millau_hash.rs
similarity index 100%
rename from bridges/primitives/chains/millau/src/millau_hash.rs
rename to bridges/primitives/chain-millau/src/millau_hash.rs
diff --git a/bridges/primitives/chains/polkadot/Cargo.toml b/bridges/primitives/chain-polkadot/Cargo.toml
similarity index 75%
rename from bridges/primitives/chains/polkadot/Cargo.toml
rename to bridges/primitives/chain-polkadot/Cargo.toml
index 595fb149f4435cc94e828c7c4b79d9646f6f8a12..22ded41b9145ca690f423939d7bdc611ecc48c55 100644
--- a/bridges/primitives/chains/polkadot/Cargo.toml
+++ b/bridges/primitives/chain-polkadot/Cargo.toml
@@ -9,9 +9,9 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 [dependencies]
 
 # Bridge Dependencies
-bp-messages = { path = "../../messages", default-features = false }
-bp-polkadot-core = { path = "../../polkadot-core", default-features = false }
-bp-runtime = { path = "../../runtime", 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 }
 
 # Substrate Based Dependencies
 
diff --git a/bridges/primitives/chains/polkadot/src/lib.rs b/bridges/primitives/chain-polkadot/src/lib.rs
similarity index 100%
rename from bridges/primitives/chains/polkadot/src/lib.rs
rename to bridges/primitives/chain-polkadot/src/lib.rs
diff --git a/bridges/primitives/chains/rialto/Cargo.toml b/bridges/primitives/chain-rialto/Cargo.toml
similarity index 89%
rename from bridges/primitives/chains/rialto/Cargo.toml
rename to bridges/primitives/chain-rialto/Cargo.toml
index 6dbbe7549a39b88e41d3282ce9d96da27b31daf7..7e039a40acd964c9036c8fd3dd81e40baeb431de 100644
--- a/bridges/primitives/chains/rialto/Cargo.toml
+++ b/bridges/primitives/chain-rialto/Cargo.toml
@@ -10,8 +10,8 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 
 # Bridge Dependencies
 
-bp-messages = { path = "../../messages", default-features = false }
-bp-runtime = { path = "../../runtime", default-features = false }
+bp-messages = { path = "../messages", default-features = false }
+bp-runtime = { path = "../runtime", default-features = false }
 
 # Substrate Based Dependencies
 
diff --git a/bridges/primitives/chains/rialto/src/lib.rs b/bridges/primitives/chain-rialto/src/lib.rs
similarity index 100%
rename from bridges/primitives/chains/rialto/src/lib.rs
rename to bridges/primitives/chain-rialto/src/lib.rs
diff --git a/bridges/primitives/chains/rococo/Cargo.toml b/bridges/primitives/chain-rococo/Cargo.toml
similarity index 75%
rename from bridges/primitives/chains/rococo/Cargo.toml
rename to bridges/primitives/chain-rococo/Cargo.toml
index db6bc121562d115f7442e0969ef2ff6a534ba411..863203ad8d74141a5c7960284f321f5204d841c5 100644
--- a/bridges/primitives/chains/rococo/Cargo.toml
+++ b/bridges/primitives/chain-rococo/Cargo.toml
@@ -9,9 +9,9 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 [dependencies]
 
 # Bridge Dependencies
-bp-messages = { path = "../../messages", default-features = false }
-bp-polkadot-core = { path = "../../polkadot-core", default-features = false }
-bp-runtime = { path = "../../runtime", 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 }
 
 # Substrate Based Dependencies
 sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false }
diff --git a/bridges/primitives/chains/rococo/src/lib.rs b/bridges/primitives/chain-rococo/src/lib.rs
similarity index 98%
rename from bridges/primitives/chains/rococo/src/lib.rs
rename to bridges/primitives/chain-rococo/src/lib.rs
index b52049cd631e78767968f993d4c6e3a46f7fa8f5..13a99347807e46d291712c7ee123ec2d9fe07e03 100644
--- a/bridges/primitives/chains/rococo/src/lib.rs
+++ b/bridges/primitives/chain-rococo/src/lib.rs
@@ -20,7 +20,7 @@
 // Runtime-generated DecodeLimit::decode_all_with_depth_limit
 #![allow(clippy::unnecessary_mut_passed)]
 
-use bp_messages::{LaneId, Weight, MessageNonce, UnrewardedRelayersState};
+use bp_messages::{LaneId, MessageNonce, UnrewardedRelayersState, Weight};
 use sp_std::prelude::*;
 
 pub use bp_polkadot_core::*;
diff --git a/bridges/primitives/chains/westend/Cargo.toml b/bridges/primitives/chain-westend/Cargo.toml
similarity index 75%
rename from bridges/primitives/chains/westend/Cargo.toml
rename to bridges/primitives/chain-westend/Cargo.toml
index 654f0291461b315e1dbd5b8057820517121dbdb0..df8becd9596a5692a910331a2bc638a0b1a9cde1 100644
--- a/bridges/primitives/chains/westend/Cargo.toml
+++ b/bridges/primitives/chain-westend/Cargo.toml
@@ -9,9 +9,9 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 [dependencies]
 
 # Bridge Dependencies
-bp-messages = { path = "../../messages", default-features = false }
-bp-polkadot-core = { path = "../../polkadot-core", default-features = false }
-bp-runtime = { path = "../../runtime", 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 }
 
 # Substrate Based Dependencies
 sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false }
diff --git a/bridges/primitives/chains/westend/src/lib.rs b/bridges/primitives/chain-westend/src/lib.rs
similarity index 100%
rename from bridges/primitives/chains/westend/src/lib.rs
rename to bridges/primitives/chain-westend/src/lib.rs
diff --git a/bridges/relays/ethereum/Cargo.toml b/bridges/relays/bin-ethereum/Cargo.toml
similarity index 82%
rename from bridges/relays/ethereum/Cargo.toml
rename to bridges/relays/bin-ethereum/Cargo.toml
index 1975830e5a5a498cdc66ca22cc9c17d9e89256a5..efd9c0194b28cae3164238fa1a82cb4000f9b14d 100644
--- a/bridges/relays/ethereum/Cargo.toml
+++ b/bridges/relays/bin-ethereum/Cargo.toml
@@ -29,13 +29,13 @@ time = "0.2"
 
 bp-currency-exchange = { path = "../../primitives/currency-exchange" }
 bp-eth-poa = { path = "../../primitives/ethereum-poa" }
-exchange-relay = { path = "../generic/exchange" }
-headers-relay = { path = "../generic/headers" }
-messages-relay = { path = "../generic/messages" }
-relay-ethereum-client = { path = "../clients/ethereum" }
-relay-rialto-client = { path = "../clients/rialto" }
-relay-substrate-client = { path = "../clients/substrate" }
-relay-utils = { path = "../generic/utils" }
+exchange-relay = { path = "../exchange" }
+headers-relay = { path = "../headers" }
+messages-relay = { path = "../messages" }
+relay-ethereum-client = { path = "../client-ethereum" }
+relay-rialto-client = { path = "../client-rialto" }
+relay-substrate-client = { path = "../client-substrate" }
+relay-utils = { path = "../utils" }
 rialto-runtime = { path = "../../bin/rialto/runtime" }
 
 # Substrate Dependencies
diff --git a/bridges/relays/ethereum/README.md b/bridges/relays/bin-ethereum/README.md
similarity index 100%
rename from bridges/relays/ethereum/README.md
rename to bridges/relays/bin-ethereum/README.md
diff --git a/bridges/relays/ethereum/res/substrate-bridge-abi.json b/bridges/relays/bin-ethereum/res/substrate-bridge-abi.json
similarity index 100%
rename from bridges/relays/ethereum/res/substrate-bridge-abi.json
rename to bridges/relays/bin-ethereum/res/substrate-bridge-abi.json
diff --git a/bridges/relays/ethereum/res/substrate-bridge-bytecode.hex b/bridges/relays/bin-ethereum/res/substrate-bridge-bytecode.hex
similarity index 100%
rename from bridges/relays/ethereum/res/substrate-bridge-bytecode.hex
rename to bridges/relays/bin-ethereum/res/substrate-bridge-bytecode.hex
diff --git a/bridges/relays/ethereum/res/substrate-bridge-metadata.txt b/bridges/relays/bin-ethereum/res/substrate-bridge-metadata.txt
similarity index 100%
rename from bridges/relays/ethereum/res/substrate-bridge-metadata.txt
rename to bridges/relays/bin-ethereum/res/substrate-bridge-metadata.txt
diff --git a/bridges/relays/ethereum/src/cli.yml b/bridges/relays/bin-ethereum/src/cli.yml
similarity index 100%
rename from bridges/relays/ethereum/src/cli.yml
rename to bridges/relays/bin-ethereum/src/cli.yml
diff --git a/bridges/relays/ethereum/src/ethereum_client.rs b/bridges/relays/bin-ethereum/src/ethereum_client.rs
similarity index 100%
rename from bridges/relays/ethereum/src/ethereum_client.rs
rename to bridges/relays/bin-ethereum/src/ethereum_client.rs
diff --git a/bridges/relays/ethereum/src/ethereum_deploy_contract.rs b/bridges/relays/bin-ethereum/src/ethereum_deploy_contract.rs
similarity index 100%
rename from bridges/relays/ethereum/src/ethereum_deploy_contract.rs
rename to bridges/relays/bin-ethereum/src/ethereum_deploy_contract.rs
diff --git a/bridges/relays/ethereum/src/ethereum_exchange.rs b/bridges/relays/bin-ethereum/src/ethereum_exchange.rs
similarity index 100%
rename from bridges/relays/ethereum/src/ethereum_exchange.rs
rename to bridges/relays/bin-ethereum/src/ethereum_exchange.rs
diff --git a/bridges/relays/ethereum/src/ethereum_exchange_submit.rs b/bridges/relays/bin-ethereum/src/ethereum_exchange_submit.rs
similarity index 100%
rename from bridges/relays/ethereum/src/ethereum_exchange_submit.rs
rename to bridges/relays/bin-ethereum/src/ethereum_exchange_submit.rs
diff --git a/bridges/relays/ethereum/src/ethereum_sync_loop.rs b/bridges/relays/bin-ethereum/src/ethereum_sync_loop.rs
similarity index 100%
rename from bridges/relays/ethereum/src/ethereum_sync_loop.rs
rename to bridges/relays/bin-ethereum/src/ethereum_sync_loop.rs
diff --git a/bridges/relays/ethereum/src/instances.rs b/bridges/relays/bin-ethereum/src/instances.rs
similarity index 100%
rename from bridges/relays/ethereum/src/instances.rs
rename to bridges/relays/bin-ethereum/src/instances.rs
diff --git a/bridges/relays/ethereum/src/main.rs b/bridges/relays/bin-ethereum/src/main.rs
similarity index 100%
rename from bridges/relays/ethereum/src/main.rs
rename to bridges/relays/bin-ethereum/src/main.rs
diff --git a/bridges/relays/ethereum/src/rialto_client.rs b/bridges/relays/bin-ethereum/src/rialto_client.rs
similarity index 100%
rename from bridges/relays/ethereum/src/rialto_client.rs
rename to bridges/relays/bin-ethereum/src/rialto_client.rs
diff --git a/bridges/relays/ethereum/src/rpc_errors.rs b/bridges/relays/bin-ethereum/src/rpc_errors.rs
similarity index 100%
rename from bridges/relays/ethereum/src/rpc_errors.rs
rename to bridges/relays/bin-ethereum/src/rpc_errors.rs
diff --git a/bridges/relays/ethereum/src/substrate_sync_loop.rs b/bridges/relays/bin-ethereum/src/substrate_sync_loop.rs
similarity index 100%
rename from bridges/relays/ethereum/src/substrate_sync_loop.rs
rename to bridges/relays/bin-ethereum/src/substrate_sync_loop.rs
diff --git a/bridges/relays/ethereum/src/substrate_types.rs b/bridges/relays/bin-ethereum/src/substrate_types.rs
similarity index 100%
rename from bridges/relays/ethereum/src/substrate_types.rs
rename to bridges/relays/bin-ethereum/src/substrate_types.rs
diff --git a/bridges/relays/substrate/Cargo.toml b/bridges/relays/bin-substrate/Cargo.toml
similarity index 66%
rename from bridges/relays/substrate/Cargo.toml
rename to bridges/relays/bin-substrate/Cargo.toml
index be4f74fb3d9a8c137205cb491036b8f6835e024a..ff2a7fc6a2be2868066fa327277aa0c6185d2cb5 100644
--- a/bridges/relays/substrate/Cargo.toml
+++ b/bridges/relays/bin-substrate/Cargo.toml
@@ -20,29 +20,29 @@ structopt = "0.3"
 # Bridge dependencies
 
 bp-header-chain = { path = "../../primitives/header-chain" }
-bp-kusama = { path = "../../primitives/chains/kusama" }
+bp-kusama = { path = "../../primitives/chain-kusama" }
 bp-messages = { path = "../../primitives/messages" }
-bp-millau = { path = "../../primitives/chains/millau" }
-bp-polkadot = { path = "../../primitives/chains/polkadot" }
+bp-millau = { path = "../../primitives/chain-millau" }
+bp-polkadot = { path = "../../primitives/chain-polkadot" }
+bp-rialto = { path = "../../primitives/chain-rialto" }
 bp-runtime = { path = "../../primitives/runtime" }
-bp-rialto = { path = "../../primitives/chains/rialto" }
-bp-westend = { path = "../../primitives/chains/westend" }
+bp-westend = { path = "../../primitives/chain-westend" }
 bridge-runtime-common = { path = "../../bin/runtime-common" }
 finality-grandpa = { version = "0.14.0" }
-finality-relay = { path = "../generic/finality" }
-headers-relay = { path = "../generic/headers" }
-messages-relay = { path = "../generic/messages" }
+finality-relay = { path = "../finality" }
+headers-relay = { path = "../headers" }
+messages-relay = { path = "../messages" }
 millau-runtime = { path = "../../bin/millau/runtime" }
 pallet-bridge-call-dispatch = { path = "../../modules/call-dispatch" }
-pallet-finality-verifier = { path = "../../modules/finality-verifier" }
 pallet-bridge-messages = { path = "../../modules/messages" }
-relay-kusama-client = { path = "../clients/kusama" }
-relay-millau-client = { path = "../clients/millau" }
-relay-polkadot-client = { path = "../clients/polkadot" }
-relay-rialto-client = { path = "../clients/rialto" }
-relay-substrate-client = { path = "../clients/substrate" }
-relay-westend-client = { path = "../clients/westend" }
-relay-utils = { path = "../generic/utils" }
+pallet-finality-verifier = { path = "../../modules/finality-verifier" }
+relay-kusama-client = { path = "../client-kusama" }
+relay-millau-client = { path = "../client-millau" }
+relay-polkadot-client = { path = "../client-polkadot" }
+relay-rialto-client = { path = "../client-rialto" }
+relay-substrate-client = { path = "../client-substrate" }
+relay-utils = { path = "../utils" }
+relay-westend-client = { path = "../client-westend" }
 rialto-runtime = { path = "../../bin/rialto/runtime" }
 
 # Substrate Dependencies
diff --git a/bridges/relays/substrate/src/cli.rs b/bridges/relays/bin-substrate/src/cli.rs
similarity index 100%
rename from bridges/relays/substrate/src/cli.rs
rename to bridges/relays/bin-substrate/src/cli.rs
diff --git a/bridges/relays/substrate/src/finality_pipeline.rs b/bridges/relays/bin-substrate/src/finality_pipeline.rs
similarity index 100%
rename from bridges/relays/substrate/src/finality_pipeline.rs
rename to bridges/relays/bin-substrate/src/finality_pipeline.rs
diff --git a/bridges/relays/substrate/src/finality_target.rs b/bridges/relays/bin-substrate/src/finality_target.rs
similarity index 100%
rename from bridges/relays/substrate/src/finality_target.rs
rename to bridges/relays/bin-substrate/src/finality_target.rs
diff --git a/bridges/relays/substrate/src/headers_initialize.rs b/bridges/relays/bin-substrate/src/headers_initialize.rs
similarity index 100%
rename from bridges/relays/substrate/src/headers_initialize.rs
rename to bridges/relays/bin-substrate/src/headers_initialize.rs
diff --git a/bridges/relays/substrate/src/main.rs b/bridges/relays/bin-substrate/src/main.rs
similarity index 100%
rename from bridges/relays/substrate/src/main.rs
rename to bridges/relays/bin-substrate/src/main.rs
diff --git a/bridges/relays/substrate/src/messages_lane.rs b/bridges/relays/bin-substrate/src/messages_lane.rs
similarity index 100%
rename from bridges/relays/substrate/src/messages_lane.rs
rename to bridges/relays/bin-substrate/src/messages_lane.rs
diff --git a/bridges/relays/substrate/src/messages_source.rs b/bridges/relays/bin-substrate/src/messages_source.rs
similarity index 100%
rename from bridges/relays/substrate/src/messages_source.rs
rename to bridges/relays/bin-substrate/src/messages_source.rs
diff --git a/bridges/relays/substrate/src/messages_target.rs b/bridges/relays/bin-substrate/src/messages_target.rs
similarity index 100%
rename from bridges/relays/substrate/src/messages_target.rs
rename to bridges/relays/bin-substrate/src/messages_target.rs
diff --git a/bridges/relays/substrate/src/rialto_millau/cli.rs b/bridges/relays/bin-substrate/src/rialto_millau/cli.rs
similarity index 100%
rename from bridges/relays/substrate/src/rialto_millau/cli.rs
rename to bridges/relays/bin-substrate/src/rialto_millau/cli.rs
diff --git a/bridges/relays/substrate/src/rialto_millau/millau_headers_to_rialto.rs b/bridges/relays/bin-substrate/src/rialto_millau/millau_headers_to_rialto.rs
similarity index 100%
rename from bridges/relays/substrate/src/rialto_millau/millau_headers_to_rialto.rs
rename to bridges/relays/bin-substrate/src/rialto_millau/millau_headers_to_rialto.rs
diff --git a/bridges/relays/substrate/src/rialto_millau/millau_messages_to_rialto.rs b/bridges/relays/bin-substrate/src/rialto_millau/millau_messages_to_rialto.rs
similarity index 100%
rename from bridges/relays/substrate/src/rialto_millau/millau_messages_to_rialto.rs
rename to bridges/relays/bin-substrate/src/rialto_millau/millau_messages_to_rialto.rs
diff --git a/bridges/relays/substrate/src/rialto_millau/mod.rs b/bridges/relays/bin-substrate/src/rialto_millau/mod.rs
similarity index 100%
rename from bridges/relays/substrate/src/rialto_millau/mod.rs
rename to bridges/relays/bin-substrate/src/rialto_millau/mod.rs
diff --git a/bridges/relays/substrate/src/rialto_millau/rialto_headers_to_millau.rs b/bridges/relays/bin-substrate/src/rialto_millau/rialto_headers_to_millau.rs
similarity index 100%
rename from bridges/relays/substrate/src/rialto_millau/rialto_headers_to_millau.rs
rename to bridges/relays/bin-substrate/src/rialto_millau/rialto_headers_to_millau.rs
diff --git a/bridges/relays/substrate/src/rialto_millau/rialto_messages_to_millau.rs b/bridges/relays/bin-substrate/src/rialto_millau/rialto_messages_to_millau.rs
similarity index 100%
rename from bridges/relays/substrate/src/rialto_millau/rialto_messages_to_millau.rs
rename to bridges/relays/bin-substrate/src/rialto_millau/rialto_messages_to_millau.rs
diff --git a/bridges/relays/substrate/src/rialto_millau/westend_headers_to_millau.rs b/bridges/relays/bin-substrate/src/rialto_millau/westend_headers_to_millau.rs
similarity index 100%
rename from bridges/relays/substrate/src/rialto_millau/westend_headers_to_millau.rs
rename to bridges/relays/bin-substrate/src/rialto_millau/westend_headers_to_millau.rs
diff --git a/bridges/relays/clients/ethereum/Cargo.toml b/bridges/relays/client-ethereum/Cargo.toml
similarity index 79%
rename from bridges/relays/clients/ethereum/Cargo.toml
rename to bridges/relays/client-ethereum/Cargo.toml
index e0e1a778c74490384569684eb689723ac7e72125..79f6ab0cf6feb4b0c5aff7dddab2914a795f2fb6 100644
--- a/bridges/relays/clients/ethereum/Cargo.toml
+++ b/bridges/relays/client-ethereum/Cargo.toml
@@ -6,14 +6,14 @@ edition = "2018"
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 
 [dependencies]
-bp-eth-poa = { path = "../../../primitives/ethereum-poa" }
+bp-eth-poa = { path = "../../primitives/ethereum-poa" }
 codec = { package = "parity-scale-codec", version = "2.0.0" }
-headers-relay = { path = "../../generic/headers" }
+headers-relay = { path = "../headers" }
 hex-literal = "0.3"
 jsonrpsee-proc-macros = "0.2.0-alpha.2"
 jsonrpsee-types = "0.2.0-alpha.2"
 jsonrpsee-ws-client = "0.2.0-alpha.2"
 libsecp256k1 = { version = "0.3.4", default-features = false, features = ["hmac"] }
 log = "0.4.11"
-relay-utils = { path = "../../generic/utils" }
+relay-utils = { path = "../utils" }
 web3 = { version = "0.15", git = "https://github.com/tomusdrw/rust-web3", branch ="td-ethabi", default-features = false }
diff --git a/bridges/relays/clients/ethereum/src/client.rs b/bridges/relays/client-ethereum/src/client.rs
similarity index 100%
rename from bridges/relays/clients/ethereum/src/client.rs
rename to bridges/relays/client-ethereum/src/client.rs
diff --git a/bridges/relays/clients/ethereum/src/error.rs b/bridges/relays/client-ethereum/src/error.rs
similarity index 100%
rename from bridges/relays/clients/ethereum/src/error.rs
rename to bridges/relays/client-ethereum/src/error.rs
diff --git a/bridges/relays/clients/ethereum/src/lib.rs b/bridges/relays/client-ethereum/src/lib.rs
similarity index 100%
rename from bridges/relays/clients/ethereum/src/lib.rs
rename to bridges/relays/client-ethereum/src/lib.rs
diff --git a/bridges/relays/clients/ethereum/src/rpc.rs b/bridges/relays/client-ethereum/src/rpc.rs
similarity index 100%
rename from bridges/relays/clients/ethereum/src/rpc.rs
rename to bridges/relays/client-ethereum/src/rpc.rs
diff --git a/bridges/relays/clients/ethereum/src/sign.rs b/bridges/relays/client-ethereum/src/sign.rs
similarity index 100%
rename from bridges/relays/clients/ethereum/src/sign.rs
rename to bridges/relays/client-ethereum/src/sign.rs
diff --git a/bridges/relays/clients/ethereum/src/types.rs b/bridges/relays/client-ethereum/src/types.rs
similarity index 100%
rename from bridges/relays/clients/ethereum/src/types.rs
rename to bridges/relays/client-ethereum/src/types.rs
diff --git a/bridges/relays/clients/kusama/Cargo.toml b/bridges/relays/client-kusama/Cargo.toml
similarity index 80%
rename from bridges/relays/clients/kusama/Cargo.toml
rename to bridges/relays/client-kusama/Cargo.toml
index e8e44ce2a87c0b2e918912323c6f5862dd77ac89..b9c397bca6c0198eaf5b162570804d80b67cd09a 100644
--- a/bridges/relays/clients/kusama/Cargo.toml
+++ b/bridges/relays/client-kusama/Cargo.toml
@@ -7,13 +7,13 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "2.0.0" }
-headers-relay = { path = "../../generic/headers" }
-relay-substrate-client = { path = "../substrate" }
-relay-utils = { path = "../../generic/utils" }
+headers-relay = { path = "../headers" }
+relay-substrate-client = { path = "../client-substrate" }
+relay-utils = { path = "../utils" }
 
 # Bridge dependencies
 
-bp-kusama = { path = "../../../primitives/chains/kusama" }
+bp-kusama = { path = "../../primitives/chain-kusama" }
 
 # Substrate Dependencies
 
diff --git a/bridges/relays/clients/kusama/src/lib.rs b/bridges/relays/client-kusama/src/lib.rs
similarity index 100%
rename from bridges/relays/clients/kusama/src/lib.rs
rename to bridges/relays/client-kusama/src/lib.rs
diff --git a/bridges/relays/clients/millau/Cargo.toml b/bridges/relays/client-millau/Cargo.toml
similarity index 79%
rename from bridges/relays/clients/millau/Cargo.toml
rename to bridges/relays/client-millau/Cargo.toml
index f975022aea869f9602164adca70aae95ffd26837..e16f06f8528b674e0466986431d05bf5a2de55bc 100644
--- a/bridges/relays/clients/millau/Cargo.toml
+++ b/bridges/relays/client-millau/Cargo.toml
@@ -7,13 +7,13 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "2.0.0" }
-headers-relay = { path = "../../generic/headers" }
-relay-substrate-client = { path = "../../clients/substrate" }
-relay-utils = { path = "../../generic/utils" }
+headers-relay = { path = "../headers" }
+relay-substrate-client = { path = "../client-substrate" }
+relay-utils = { path = "../utils" }
 
 # Supported Chains
 
-millau-runtime = { path = "../../../bin/millau/runtime" }
+millau-runtime = { path = "../../bin/millau/runtime" }
 
 # Substrate Dependencies
 
diff --git a/bridges/relays/clients/millau/src/lib.rs b/bridges/relays/client-millau/src/lib.rs
similarity index 100%
rename from bridges/relays/clients/millau/src/lib.rs
rename to bridges/relays/client-millau/src/lib.rs
diff --git a/bridges/relays/clients/polkadot/Cargo.toml b/bridges/relays/client-polkadot/Cargo.toml
similarity index 79%
rename from bridges/relays/clients/polkadot/Cargo.toml
rename to bridges/relays/client-polkadot/Cargo.toml
index b40397f194f3443e3e2b2b001d8be501761b53c6..b148745f5a9872778d45e1bfb0ea8ea1484db90b 100644
--- a/bridges/relays/clients/polkadot/Cargo.toml
+++ b/bridges/relays/client-polkadot/Cargo.toml
@@ -7,13 +7,13 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "2.0.0" }
-headers-relay = { path = "../../generic/headers" }
-relay-substrate-client = { path = "../substrate" }
-relay-utils = { path = "../../generic/utils" }
+headers-relay = { path = "../headers" }
+relay-substrate-client = { path = "../client-substrate" }
+relay-utils = { path = "../utils" }
 
 # Bridge dependencies
 
-bp-polkadot = { path = "../../../primitives/chains/polkadot" }
+bp-polkadot = { path = "../../primitives/chain-polkadot" }
 
 # Substrate Dependencies
 
diff --git a/bridges/relays/clients/polkadot/src/lib.rs b/bridges/relays/client-polkadot/src/lib.rs
similarity index 100%
rename from bridges/relays/clients/polkadot/src/lib.rs
rename to bridges/relays/client-polkadot/src/lib.rs
diff --git a/bridges/relays/clients/rialto/Cargo.toml b/bridges/relays/client-rialto/Cargo.toml
similarity index 80%
rename from bridges/relays/clients/rialto/Cargo.toml
rename to bridges/relays/client-rialto/Cargo.toml
index 74aeb8c30f00b00f2091cd5d51d64c13ac21cda0..88e8e12add4019c56a8181891f12d65e31391e73 100644
--- a/bridges/relays/clients/rialto/Cargo.toml
+++ b/bridges/relays/client-rialto/Cargo.toml
@@ -7,13 +7,13 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "2.0.0" }
-headers-relay = { path = "../../generic/headers" }
-relay-substrate-client = { path = "../substrate" }
-relay-utils = { path = "../../generic/utils" }
+headers-relay = { path = "../headers" }
+relay-substrate-client = { path = "../client-substrate" }
+relay-utils = { path = "../utils" }
 
 # Bridge dependencies
 
-rialto-runtime = { path = "../../../bin/rialto/runtime" }
+rialto-runtime = { path = "../../bin/rialto/runtime" }
 
 # Substrate Dependencies
 
diff --git a/bridges/relays/clients/rialto/src/lib.rs b/bridges/relays/client-rialto/src/lib.rs
similarity index 100%
rename from bridges/relays/clients/rialto/src/lib.rs
rename to bridges/relays/client-rialto/src/lib.rs
diff --git a/bridges/relays/clients/substrate/Cargo.toml b/bridges/relays/client-substrate/Cargo.toml
similarity index 80%
rename from bridges/relays/clients/substrate/Cargo.toml
rename to bridges/relays/client-substrate/Cargo.toml
index 3f62731d521de6afaa7b88ab51cf92b471f19e03..83252358a746d3c9c25cfdd305ec869190e67f63 100644
--- a/bridges/relays/clients/substrate/Cargo.toml
+++ b/bridges/relays/client-substrate/Cargo.toml
@@ -18,12 +18,12 @@ rand = "0.7"
 
 # Bridge dependencies
 
-bp-header-chain = { path = "../../../primitives/header-chain" }
-bp-messages = { path = "../../../primitives/messages" }
-bp-runtime = { path = "../../../primitives/runtime" }
-finality-relay = { path = "../../generic/finality" }
-headers-relay = { path = "../../generic/headers" }
-relay-utils = { path = "../../generic/utils" }
+bp-header-chain = { path = "../../primitives/header-chain" }
+bp-messages = { path = "../../primitives/messages" }
+bp-runtime = { path = "../../primitives/runtime" }
+finality-relay = { path = "../finality" }
+headers-relay = { path = "../headers" }
+relay-utils = { path = "../utils" }
 
 # Substrate Dependencies
 
diff --git a/bridges/relays/clients/substrate/src/chain.rs b/bridges/relays/client-substrate/src/chain.rs
similarity index 100%
rename from bridges/relays/clients/substrate/src/chain.rs
rename to bridges/relays/client-substrate/src/chain.rs
diff --git a/bridges/relays/clients/substrate/src/client.rs b/bridges/relays/client-substrate/src/client.rs
similarity index 100%
rename from bridges/relays/clients/substrate/src/client.rs
rename to bridges/relays/client-substrate/src/client.rs
diff --git a/bridges/relays/clients/substrate/src/error.rs b/bridges/relays/client-substrate/src/error.rs
similarity index 100%
rename from bridges/relays/clients/substrate/src/error.rs
rename to bridges/relays/client-substrate/src/error.rs
diff --git a/bridges/relays/clients/substrate/src/finality_source.rs b/bridges/relays/client-substrate/src/finality_source.rs
similarity index 100%
rename from bridges/relays/clients/substrate/src/finality_source.rs
rename to bridges/relays/client-substrate/src/finality_source.rs
diff --git a/bridges/relays/clients/substrate/src/guard.rs b/bridges/relays/client-substrate/src/guard.rs
similarity index 100%
rename from bridges/relays/clients/substrate/src/guard.rs
rename to bridges/relays/client-substrate/src/guard.rs
diff --git a/bridges/relays/clients/substrate/src/headers_source.rs b/bridges/relays/client-substrate/src/headers_source.rs
similarity index 100%
rename from bridges/relays/clients/substrate/src/headers_source.rs
rename to bridges/relays/client-substrate/src/headers_source.rs
diff --git a/bridges/relays/clients/substrate/src/lib.rs b/bridges/relays/client-substrate/src/lib.rs
similarity index 100%
rename from bridges/relays/clients/substrate/src/lib.rs
rename to bridges/relays/client-substrate/src/lib.rs
diff --git a/bridges/relays/clients/substrate/src/rpc.rs b/bridges/relays/client-substrate/src/rpc.rs
similarity index 100%
rename from bridges/relays/clients/substrate/src/rpc.rs
rename to bridges/relays/client-substrate/src/rpc.rs
diff --git a/bridges/relays/clients/substrate/src/sync_header.rs b/bridges/relays/client-substrate/src/sync_header.rs
similarity index 100%
rename from bridges/relays/clients/substrate/src/sync_header.rs
rename to bridges/relays/client-substrate/src/sync_header.rs
diff --git a/bridges/relays/clients/westend/Cargo.toml b/bridges/relays/client-westend/Cargo.toml
similarity index 79%
rename from bridges/relays/clients/westend/Cargo.toml
rename to bridges/relays/client-westend/Cargo.toml
index d5d56154f35227dad61faf2214e14895216024d2..a408ae3a46daf7b0bd9a0e6d7b5ddd3a28c8f379 100644
--- a/bridges/relays/clients/westend/Cargo.toml
+++ b/bridges/relays/client-westend/Cargo.toml
@@ -7,13 +7,13 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "2.0.0" }
-headers-relay = { path = "../../generic/headers" }
-relay-substrate-client = { path = "../substrate" }
-relay-utils = { path = "../../generic/utils" }
+headers-relay = { path = "../headers" }
+relay-substrate-client = { path = "../client-substrate" }
+relay-utils = { path = "../utils" }
 
 # Bridge dependencies
 
-bp-westend = { path = "../../../primitives/chains/westend" }
+bp-westend = { path = "../../primitives/chain-westend" }
 
 # Substrate Dependencies
 
diff --git a/bridges/relays/clients/westend/src/lib.rs b/bridges/relays/client-westend/src/lib.rs
similarity index 100%
rename from bridges/relays/clients/westend/src/lib.rs
rename to bridges/relays/client-westend/src/lib.rs
diff --git a/bridges/relays/generic/exchange/Cargo.toml b/bridges/relays/exchange/Cargo.toml
similarity index 100%
rename from bridges/relays/generic/exchange/Cargo.toml
rename to bridges/relays/exchange/Cargo.toml
diff --git a/bridges/relays/generic/exchange/src/exchange.rs b/bridges/relays/exchange/src/exchange.rs
similarity index 100%
rename from bridges/relays/generic/exchange/src/exchange.rs
rename to bridges/relays/exchange/src/exchange.rs
diff --git a/bridges/relays/generic/exchange/src/exchange_loop.rs b/bridges/relays/exchange/src/exchange_loop.rs
similarity index 99%
rename from bridges/relays/generic/exchange/src/exchange_loop.rs
rename to bridges/relays/exchange/src/exchange_loop.rs
index f09ad7de41bb5ae6274134ea4abaad0c696d8fa5..d3282d70f664251a8bf9c03cb5243ced267ff0e1 100644
--- a/bridges/relays/generic/exchange/src/exchange_loop.rs
+++ b/bridges/relays/exchange/src/exchange_loop.rs
@@ -321,12 +321,12 @@ mod tests {
 			}
 		}));
 
-		run(
+		async_std::task::block_on(run(
 			storage,
 			source,
 			target,
 			None,
 			exit_receiver.into_future().map(|(_, _)| ()),
-		);
+		));
 	}
 }
diff --git a/bridges/relays/generic/exchange/src/exchange_loop_metrics.rs b/bridges/relays/exchange/src/exchange_loop_metrics.rs
similarity index 100%
rename from bridges/relays/generic/exchange/src/exchange_loop_metrics.rs
rename to bridges/relays/exchange/src/exchange_loop_metrics.rs
diff --git a/bridges/relays/generic/exchange/src/lib.rs b/bridges/relays/exchange/src/lib.rs
similarity index 100%
rename from bridges/relays/generic/exchange/src/lib.rs
rename to bridges/relays/exchange/src/lib.rs
diff --git a/bridges/relays/generic/finality/Cargo.toml b/bridges/relays/finality/Cargo.toml
similarity index 100%
rename from bridges/relays/generic/finality/Cargo.toml
rename to bridges/relays/finality/Cargo.toml
diff --git a/bridges/relays/generic/finality/src/finality_loop.rs b/bridges/relays/finality/src/finality_loop.rs
similarity index 100%
rename from bridges/relays/generic/finality/src/finality_loop.rs
rename to bridges/relays/finality/src/finality_loop.rs
diff --git a/bridges/relays/generic/finality/src/finality_loop_tests.rs b/bridges/relays/finality/src/finality_loop_tests.rs
similarity index 99%
rename from bridges/relays/generic/finality/src/finality_loop_tests.rs
rename to bridges/relays/finality/src/finality_loop_tests.rs
index 53f5225ab7e33cebef227e0e1911ac00ba7c5440..64ab91420fb9156be602af5f077a8429713bb1ba 100644
--- a/bridges/relays/generic/finality/src/finality_loop_tests.rs
+++ b/bridges/relays/finality/src/finality_loop_tests.rs
@@ -202,13 +202,13 @@ fn run_sync_loop(state_function: impl Fn(&mut ClientsData) -> bool + Send + Sync
 		stall_timeout: Duration::from_secs(1),
 	};
 
-	run(
+	async_std::task::block_on(run(
 		source_client,
 		target_client,
 		sync_params,
 		None,
 		exit_receiver.into_future().map(|(_, _)| ()),
-	);
+	));
 
 	let clients_data = clients_data.lock().clone();
 	clients_data
diff --git a/bridges/relays/generic/finality/src/lib.rs b/bridges/relays/finality/src/lib.rs
similarity index 100%
rename from bridges/relays/generic/finality/src/lib.rs
rename to bridges/relays/finality/src/lib.rs
diff --git a/bridges/relays/generic/headers/Cargo.toml b/bridges/relays/headers/Cargo.toml
similarity index 100%
rename from bridges/relays/generic/headers/Cargo.toml
rename to bridges/relays/headers/Cargo.toml
diff --git a/bridges/relays/generic/headers/src/headers.rs b/bridges/relays/headers/src/headers.rs
similarity index 100%
rename from bridges/relays/generic/headers/src/headers.rs
rename to bridges/relays/headers/src/headers.rs
diff --git a/bridges/relays/generic/headers/src/lib.rs b/bridges/relays/headers/src/lib.rs
similarity index 100%
rename from bridges/relays/generic/headers/src/lib.rs
rename to bridges/relays/headers/src/lib.rs
diff --git a/bridges/relays/generic/headers/src/sync.rs b/bridges/relays/headers/src/sync.rs
similarity index 100%
rename from bridges/relays/generic/headers/src/sync.rs
rename to bridges/relays/headers/src/sync.rs
diff --git a/bridges/relays/generic/headers/src/sync_loop.rs b/bridges/relays/headers/src/sync_loop.rs
similarity index 100%
rename from bridges/relays/generic/headers/src/sync_loop.rs
rename to bridges/relays/headers/src/sync_loop.rs
diff --git a/bridges/relays/generic/headers/src/sync_loop_metrics.rs b/bridges/relays/headers/src/sync_loop_metrics.rs
similarity index 100%
rename from bridges/relays/generic/headers/src/sync_loop_metrics.rs
rename to bridges/relays/headers/src/sync_loop_metrics.rs
diff --git a/bridges/relays/generic/headers/src/sync_loop_tests.rs b/bridges/relays/headers/src/sync_loop_tests.rs
similarity index 99%
rename from bridges/relays/generic/headers/src/sync_loop_tests.rs
rename to bridges/relays/headers/src/sync_loop_tests.rs
index 5cfd5e4f57b664da373bd1015614f01aed5a3d28..aec9f1fa883fe585c3e922d4c472ace7e9b517a0 100644
--- a/bridges/relays/generic/headers/src/sync_loop_tests.rs
+++ b/bridges/relays/headers/src/sync_loop_tests.rs
@@ -493,7 +493,7 @@ fn run_sync_loop_test(params: SyncLoopTestParams) {
 	target.data.lock().requires_extra = target_requires_extra;
 	target.data.lock().requires_completion = target_requires_completion;
 
-	run(
+	async_std::task::block_on(run(
 		source,
 		test_tick(),
 		target,
@@ -502,7 +502,7 @@ fn run_sync_loop_test(params: SyncLoopTestParams) {
 		crate::sync::tests::default_sync_params(),
 		None,
 		exit_receiver.into_future().map(|(_, _)| ()),
-	);
+	));
 }
 
 #[test]
diff --git a/bridges/relays/generic/headers/src/sync_types.rs b/bridges/relays/headers/src/sync_types.rs
similarity index 100%
rename from bridges/relays/generic/headers/src/sync_types.rs
rename to bridges/relays/headers/src/sync_types.rs
diff --git a/bridges/relays/generic/messages/Cargo.toml b/bridges/relays/messages/Cargo.toml
similarity index 86%
rename from bridges/relays/generic/messages/Cargo.toml
rename to bridges/relays/messages/Cargo.toml
index e5bd7efaca88e8309d63a865a1e5c72b5c9a0e25..e02f8ccc868280657e6742ed8ca9fea539aed285 100644
--- a/bridges/relays/generic/messages/Cargo.toml
+++ b/bridges/relays/messages/Cargo.toml
@@ -15,5 +15,5 @@ parking_lot = "0.11.0"
 
 # Bridge Dependencies
 
-bp-messages = { path = "../../../primitives/messages" }
+bp-messages = { path = "../../primitives/messages" }
 relay-utils = { path = "../utils" }
diff --git a/bridges/relays/generic/messages/src/lib.rs b/bridges/relays/messages/src/lib.rs
similarity index 100%
rename from bridges/relays/generic/messages/src/lib.rs
rename to bridges/relays/messages/src/lib.rs
diff --git a/bridges/relays/generic/messages/src/message_lane.rs b/bridges/relays/messages/src/message_lane.rs
similarity index 100%
rename from bridges/relays/generic/messages/src/message_lane.rs
rename to bridges/relays/messages/src/message_lane.rs
diff --git a/bridges/relays/generic/messages/src/message_lane_loop.rs b/bridges/relays/messages/src/message_lane_loop.rs
similarity index 99%
rename from bridges/relays/generic/messages/src/message_lane_loop.rs
rename to bridges/relays/messages/src/message_lane_loop.rs
index dd4cd176dfce4b0e13a3853e3e64d5507f50d57d..44d31aec975b9e1aecec9f2b25fd9e5be6b04bd3 100644
--- a/bridges/relays/generic/messages/src/message_lane_loop.rs
+++ b/bridges/relays/messages/src/message_lane_loop.rs
@@ -726,7 +726,8 @@ pub(crate) mod tests {
 				target_client,
 				None,
 				exit_signal,
-			);
+			)
+			.await;
 			let result = data.lock().clone();
 			result
 		})
diff --git a/bridges/relays/generic/messages/src/message_race_delivery.rs b/bridges/relays/messages/src/message_race_delivery.rs
similarity index 100%
rename from bridges/relays/generic/messages/src/message_race_delivery.rs
rename to bridges/relays/messages/src/message_race_delivery.rs
diff --git a/bridges/relays/generic/messages/src/message_race_loop.rs b/bridges/relays/messages/src/message_race_loop.rs
similarity index 100%
rename from bridges/relays/generic/messages/src/message_race_loop.rs
rename to bridges/relays/messages/src/message_race_loop.rs
diff --git a/bridges/relays/generic/messages/src/message_race_receiving.rs b/bridges/relays/messages/src/message_race_receiving.rs
similarity index 100%
rename from bridges/relays/generic/messages/src/message_race_receiving.rs
rename to bridges/relays/messages/src/message_race_receiving.rs
diff --git a/bridges/relays/generic/messages/src/message_race_strategy.rs b/bridges/relays/messages/src/message_race_strategy.rs
similarity index 100%
rename from bridges/relays/generic/messages/src/message_race_strategy.rs
rename to bridges/relays/messages/src/message_race_strategy.rs
diff --git a/bridges/relays/generic/messages/src/metrics.rs b/bridges/relays/messages/src/metrics.rs
similarity index 100%
rename from bridges/relays/generic/messages/src/metrics.rs
rename to bridges/relays/messages/src/metrics.rs
diff --git a/bridges/relays/generic/utils/Cargo.toml b/bridges/relays/utils/Cargo.toml
similarity index 100%
rename from bridges/relays/generic/utils/Cargo.toml
rename to bridges/relays/utils/Cargo.toml
diff --git a/bridges/relays/generic/utils/src/initialize.rs b/bridges/relays/utils/src/initialize.rs
similarity index 100%
rename from bridges/relays/generic/utils/src/initialize.rs
rename to bridges/relays/utils/src/initialize.rs
diff --git a/bridges/relays/generic/utils/src/lib.rs b/bridges/relays/utils/src/lib.rs
similarity index 100%
rename from bridges/relays/generic/utils/src/lib.rs
rename to bridges/relays/utils/src/lib.rs
diff --git a/bridges/relays/generic/utils/src/metrics.rs b/bridges/relays/utils/src/metrics.rs
similarity index 100%
rename from bridges/relays/generic/utils/src/metrics.rs
rename to bridges/relays/utils/src/metrics.rs
diff --git a/bridges/relays/generic/utils/src/relay_loop.rs b/bridges/relays/utils/src/relay_loop.rs
similarity index 100%
rename from bridges/relays/generic/utils/src/relay_loop.rs
rename to bridges/relays/utils/src/relay_loop.rs