From acb872fbb03d9429790fa2fb436016615b2adb07 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tomasz=20Drwi=C4=99ga?= <tomusdrw@users.noreply.github.com>
Date: Tue, 23 Mar 2021 14:17:33 +0100
Subject: [PATCH] Flatten back the structure (#837)

* Remove chains.

* Move relay clients.

* Flatten generic.

* Fix fmt.
---
 bridges/bin/millau/node/Cargo.toml            |  2 +-
 bridges/bin/millau/runtime/Cargo.toml         |  8 ++---
 bridges/bin/rialto/node/Cargo.toml            |  2 +-
 bridges/bin/rialto/runtime/Cargo.toml         |  4 +--
 bridges/modules/messages/Cargo.toml           |  2 +-
 .../kusama => chain-kusama}/Cargo.toml        |  6 ++--
 .../kusama => chain-kusama}/src/lib.rs        |  0
 .../millau => chain-millau}/Cargo.toml        |  4 +--
 .../millau => chain-millau}/src/lib.rs        |  0
 .../src/millau_hash.rs                        |  0
 .../polkadot => chain-polkadot}/Cargo.toml    |  6 ++--
 .../polkadot => chain-polkadot}/src/lib.rs    |  0
 .../rialto => chain-rialto}/Cargo.toml        |  4 +--
 .../rialto => chain-rialto}/src/lib.rs        |  0
 .../rococo => chain-rococo}/Cargo.toml        |  6 ++--
 .../rococo => chain-rococo}/src/lib.rs        |  2 +-
 .../westend => chain-westend}/Cargo.toml      |  6 ++--
 .../westend => chain-westend}/src/lib.rs      |  0
 .../{ethereum => bin-ethereum}/Cargo.toml     | 14 ++++----
 .../{ethereum => bin-ethereum}/README.md      |  0
 .../res/substrate-bridge-abi.json             |  0
 .../res/substrate-bridge-bytecode.hex         |  0
 .../res/substrate-bridge-metadata.txt         |  0
 .../{ethereum => bin-ethereum}/src/cli.yml    |  0
 .../src/ethereum_client.rs                    |  0
 .../src/ethereum_deploy_contract.rs           |  0
 .../src/ethereum_exchange.rs                  |  0
 .../src/ethereum_exchange_submit.rs           |  0
 .../src/ethereum_sync_loop.rs                 |  0
 .../src/instances.rs                          |  0
 .../{ethereum => bin-ethereum}/src/main.rs    |  0
 .../src/rialto_client.rs                      |  0
 .../src/rpc_errors.rs                         |  0
 .../src/substrate_sync_loop.rs                |  0
 .../src/substrate_types.rs                    |  0
 .../{substrate => bin-substrate}/Cargo.toml   | 32 +++++++++----------
 .../{substrate => bin-substrate}/src/cli.rs   |  0
 .../src/finality_pipeline.rs                  |  0
 .../src/finality_target.rs                    |  0
 .../src/headers_initialize.rs                 |  0
 .../{substrate => bin-substrate}/src/main.rs  |  0
 .../src/messages_lane.rs                      |  0
 .../src/messages_source.rs                    |  0
 .../src/messages_target.rs                    |  0
 .../src/rialto_millau/cli.rs                  |  0
 .../rialto_millau/millau_headers_to_rialto.rs |  0
 .../millau_messages_to_rialto.rs              |  0
 .../src/rialto_millau/mod.rs                  |  0
 .../rialto_millau/rialto_headers_to_millau.rs |  0
 .../rialto_messages_to_millau.rs              |  0
 .../westend_headers_to_millau.rs              |  0
 .../ethereum => client-ethereum}/Cargo.toml   |  6 ++--
 .../src/client.rs                             |  0
 .../ethereum => client-ethereum}/src/error.rs |  0
 .../ethereum => client-ethereum}/src/lib.rs   |  0
 .../ethereum => client-ethereum}/src/rpc.rs   |  0
 .../ethereum => client-ethereum}/src/sign.rs  |  0
 .../ethereum => client-ethereum}/src/types.rs |  0
 .../kusama => client-kusama}/Cargo.toml       |  8 ++---
 .../kusama => client-kusama}/src/lib.rs       |  0
 .../millau => client-millau}/Cargo.toml       |  8 ++---
 .../millau => client-millau}/src/lib.rs       |  0
 .../polkadot => client-polkadot}/Cargo.toml   |  8 ++---
 .../polkadot => client-polkadot}/src/lib.rs   |  0
 .../rialto => client-rialto}/Cargo.toml       |  8 ++---
 .../rialto => client-rialto}/src/lib.rs       |  0
 .../substrate => client-substrate}/Cargo.toml | 12 +++----
 .../src/chain.rs                              |  0
 .../src/client.rs                             |  0
 .../src/error.rs                              |  0
 .../src/finality_source.rs                    |  0
 .../src/guard.rs                              |  0
 .../src/headers_source.rs                     |  0
 .../substrate => client-substrate}/src/lib.rs |  0
 .../substrate => client-substrate}/src/rpc.rs |  0
 .../src/sync_header.rs                        |  0
 .../westend => client-westend}/Cargo.toml     |  8 ++---
 .../westend => client-westend}/src/lib.rs     |  0
 .../relays/{generic => }/exchange/Cargo.toml  |  0
 .../{generic => }/exchange/src/exchange.rs    |  0
 .../exchange/src/exchange_loop.rs             |  4 +--
 .../exchange/src/exchange_loop_metrics.rs     |  0
 .../relays/{generic => }/exchange/src/lib.rs  |  0
 .../relays/{generic => }/finality/Cargo.toml  |  0
 .../finality/src/finality_loop.rs             |  0
 .../finality/src/finality_loop_tests.rs       |  4 +--
 .../relays/{generic => }/finality/src/lib.rs  |  0
 .../relays/{generic => }/headers/Cargo.toml   |  0
 .../{generic => }/headers/src/headers.rs      |  0
 .../relays/{generic => }/headers/src/lib.rs   |  0
 .../relays/{generic => }/headers/src/sync.rs  |  0
 .../{generic => }/headers/src/sync_loop.rs    |  0
 .../headers/src/sync_loop_metrics.rs          |  0
 .../headers/src/sync_loop_tests.rs            |  4 +--
 .../{generic => }/headers/src/sync_types.rs   |  0
 .../relays/{generic => }/messages/Cargo.toml  |  2 +-
 .../relays/{generic => }/messages/src/lib.rs  |  0
 .../messages/src/message_lane.rs              |  0
 .../messages/src/message_lane_loop.rs         |  3 +-
 .../messages/src/message_race_delivery.rs     |  0
 .../messages/src/message_race_loop.rs         |  0
 .../messages/src/message_race_receiving.rs    |  0
 .../messages/src/message_race_strategy.rs     |  0
 .../{generic => }/messages/src/metrics.rs     |  0
 bridges/relays/{generic => }/utils/Cargo.toml |  0
 .../{generic => }/utils/src/initialize.rs     |  0
 bridges/relays/{generic => }/utils/src/lib.rs |  0
 .../relays/{generic => }/utils/src/metrics.rs |  0
 .../{generic => }/utils/src/relay_loop.rs     |  0
 109 files changed, 87 insertions(+), 86 deletions(-)
 rename bridges/primitives/{chains/kusama => chain-kusama}/Cargo.toml (75%)
 rename bridges/primitives/{chains/kusama => chain-kusama}/src/lib.rs (100%)
 rename bridges/primitives/{chains/millau => chain-millau}/Cargo.toml (93%)
 rename bridges/primitives/{chains/millau => chain-millau}/src/lib.rs (100%)
 rename bridges/primitives/{chains/millau => chain-millau}/src/millau_hash.rs (100%)
 rename bridges/primitives/{chains/polkadot => chain-polkadot}/Cargo.toml (75%)
 rename bridges/primitives/{chains/polkadot => chain-polkadot}/src/lib.rs (100%)
 rename bridges/primitives/{chains/rialto => chain-rialto}/Cargo.toml (89%)
 rename bridges/primitives/{chains/rialto => chain-rialto}/src/lib.rs (100%)
 rename bridges/primitives/{chains/rococo => chain-rococo}/Cargo.toml (75%)
 rename bridges/primitives/{chains/rococo => chain-rococo}/src/lib.rs (98%)
 rename bridges/primitives/{chains/westend => chain-westend}/Cargo.toml (75%)
 rename bridges/primitives/{chains/westend => chain-westend}/src/lib.rs (100%)
 rename bridges/relays/{ethereum => bin-ethereum}/Cargo.toml (82%)
 rename bridges/relays/{ethereum => bin-ethereum}/README.md (100%)
 rename bridges/relays/{ethereum => bin-ethereum}/res/substrate-bridge-abi.json (100%)
 rename bridges/relays/{ethereum => bin-ethereum}/res/substrate-bridge-bytecode.hex (100%)
 rename bridges/relays/{ethereum => bin-ethereum}/res/substrate-bridge-metadata.txt (100%)
 rename bridges/relays/{ethereum => bin-ethereum}/src/cli.yml (100%)
 rename bridges/relays/{ethereum => bin-ethereum}/src/ethereum_client.rs (100%)
 rename bridges/relays/{ethereum => bin-ethereum}/src/ethereum_deploy_contract.rs (100%)
 rename bridges/relays/{ethereum => bin-ethereum}/src/ethereum_exchange.rs (100%)
 rename bridges/relays/{ethereum => bin-ethereum}/src/ethereum_exchange_submit.rs (100%)
 rename bridges/relays/{ethereum => bin-ethereum}/src/ethereum_sync_loop.rs (100%)
 rename bridges/relays/{ethereum => bin-ethereum}/src/instances.rs (100%)
 rename bridges/relays/{ethereum => bin-ethereum}/src/main.rs (100%)
 rename bridges/relays/{ethereum => bin-ethereum}/src/rialto_client.rs (100%)
 rename bridges/relays/{ethereum => bin-ethereum}/src/rpc_errors.rs (100%)
 rename bridges/relays/{ethereum => bin-ethereum}/src/substrate_sync_loop.rs (100%)
 rename bridges/relays/{ethereum => bin-ethereum}/src/substrate_types.rs (100%)
 rename bridges/relays/{substrate => bin-substrate}/Cargo.toml (66%)
 rename bridges/relays/{substrate => bin-substrate}/src/cli.rs (100%)
 rename bridges/relays/{substrate => bin-substrate}/src/finality_pipeline.rs (100%)
 rename bridges/relays/{substrate => bin-substrate}/src/finality_target.rs (100%)
 rename bridges/relays/{substrate => bin-substrate}/src/headers_initialize.rs (100%)
 rename bridges/relays/{substrate => bin-substrate}/src/main.rs (100%)
 rename bridges/relays/{substrate => bin-substrate}/src/messages_lane.rs (100%)
 rename bridges/relays/{substrate => bin-substrate}/src/messages_source.rs (100%)
 rename bridges/relays/{substrate => bin-substrate}/src/messages_target.rs (100%)
 rename bridges/relays/{substrate => bin-substrate}/src/rialto_millau/cli.rs (100%)
 rename bridges/relays/{substrate => bin-substrate}/src/rialto_millau/millau_headers_to_rialto.rs (100%)
 rename bridges/relays/{substrate => bin-substrate}/src/rialto_millau/millau_messages_to_rialto.rs (100%)
 rename bridges/relays/{substrate => bin-substrate}/src/rialto_millau/mod.rs (100%)
 rename bridges/relays/{substrate => bin-substrate}/src/rialto_millau/rialto_headers_to_millau.rs (100%)
 rename bridges/relays/{substrate => bin-substrate}/src/rialto_millau/rialto_messages_to_millau.rs (100%)
 rename bridges/relays/{substrate => bin-substrate}/src/rialto_millau/westend_headers_to_millau.rs (100%)
 rename bridges/relays/{clients/ethereum => client-ethereum}/Cargo.toml (79%)
 rename bridges/relays/{clients/ethereum => client-ethereum}/src/client.rs (100%)
 rename bridges/relays/{clients/ethereum => client-ethereum}/src/error.rs (100%)
 rename bridges/relays/{clients/ethereum => client-ethereum}/src/lib.rs (100%)
 rename bridges/relays/{clients/ethereum => client-ethereum}/src/rpc.rs (100%)
 rename bridges/relays/{clients/ethereum => client-ethereum}/src/sign.rs (100%)
 rename bridges/relays/{clients/ethereum => client-ethereum}/src/types.rs (100%)
 rename bridges/relays/{clients/kusama => client-kusama}/Cargo.toml (80%)
 rename bridges/relays/{clients/kusama => client-kusama}/src/lib.rs (100%)
 rename bridges/relays/{clients/millau => client-millau}/Cargo.toml (79%)
 rename bridges/relays/{clients/millau => client-millau}/src/lib.rs (100%)
 rename bridges/relays/{clients/polkadot => client-polkadot}/Cargo.toml (79%)
 rename bridges/relays/{clients/polkadot => client-polkadot}/src/lib.rs (100%)
 rename bridges/relays/{clients/rialto => client-rialto}/Cargo.toml (80%)
 rename bridges/relays/{clients/rialto => client-rialto}/src/lib.rs (100%)
 rename bridges/relays/{clients/substrate => client-substrate}/Cargo.toml (80%)
 rename bridges/relays/{clients/substrate => client-substrate}/src/chain.rs (100%)
 rename bridges/relays/{clients/substrate => client-substrate}/src/client.rs (100%)
 rename bridges/relays/{clients/substrate => client-substrate}/src/error.rs (100%)
 rename bridges/relays/{clients/substrate => client-substrate}/src/finality_source.rs (100%)
 rename bridges/relays/{clients/substrate => client-substrate}/src/guard.rs (100%)
 rename bridges/relays/{clients/substrate => client-substrate}/src/headers_source.rs (100%)
 rename bridges/relays/{clients/substrate => client-substrate}/src/lib.rs (100%)
 rename bridges/relays/{clients/substrate => client-substrate}/src/rpc.rs (100%)
 rename bridges/relays/{clients/substrate => client-substrate}/src/sync_header.rs (100%)
 rename bridges/relays/{clients/westend => client-westend}/Cargo.toml (79%)
 rename bridges/relays/{clients/westend => client-westend}/src/lib.rs (100%)
 rename bridges/relays/{generic => }/exchange/Cargo.toml (100%)
 rename bridges/relays/{generic => }/exchange/src/exchange.rs (100%)
 rename bridges/relays/{generic => }/exchange/src/exchange_loop.rs (99%)
 rename bridges/relays/{generic => }/exchange/src/exchange_loop_metrics.rs (100%)
 rename bridges/relays/{generic => }/exchange/src/lib.rs (100%)
 rename bridges/relays/{generic => }/finality/Cargo.toml (100%)
 rename bridges/relays/{generic => }/finality/src/finality_loop.rs (100%)
 rename bridges/relays/{generic => }/finality/src/finality_loop_tests.rs (99%)
 rename bridges/relays/{generic => }/finality/src/lib.rs (100%)
 rename bridges/relays/{generic => }/headers/Cargo.toml (100%)
 rename bridges/relays/{generic => }/headers/src/headers.rs (100%)
 rename bridges/relays/{generic => }/headers/src/lib.rs (100%)
 rename bridges/relays/{generic => }/headers/src/sync.rs (100%)
 rename bridges/relays/{generic => }/headers/src/sync_loop.rs (100%)
 rename bridges/relays/{generic => }/headers/src/sync_loop_metrics.rs (100%)
 rename bridges/relays/{generic => }/headers/src/sync_loop_tests.rs (99%)
 rename bridges/relays/{generic => }/headers/src/sync_types.rs (100%)
 rename bridges/relays/{generic => }/messages/Cargo.toml (86%)
 rename bridges/relays/{generic => }/messages/src/lib.rs (100%)
 rename bridges/relays/{generic => }/messages/src/message_lane.rs (100%)
 rename bridges/relays/{generic => }/messages/src/message_lane_loop.rs (99%)
 rename bridges/relays/{generic => }/messages/src/message_race_delivery.rs (100%)
 rename bridges/relays/{generic => }/messages/src/message_race_loop.rs (100%)
 rename bridges/relays/{generic => }/messages/src/message_race_receiving.rs (100%)
 rename bridges/relays/{generic => }/messages/src/message_race_strategy.rs (100%)
 rename bridges/relays/{generic => }/messages/src/metrics.rs (100%)
 rename bridges/relays/{generic => }/utils/Cargo.toml (100%)
 rename bridges/relays/{generic => }/utils/src/initialize.rs (100%)
 rename bridges/relays/{generic => }/utils/src/lib.rs (100%)
 rename bridges/relays/{generic => }/utils/src/metrics.rs (100%)
 rename bridges/relays/{generic => }/utils/src/relay_loop.rs (100%)

diff --git a/bridges/bin/millau/node/Cargo.toml b/bridges/bin/millau/node/Cargo.toml
index 5c09367b362..c71eb8bfe31 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 c95328b0a91..8dc08d33366 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 a3bbd8c018f..fffbe9655a4 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 536c90bce18..3824f9cbc5e 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 19dc78af721..4a75fa8181f 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 15614a922ba..70ff3b844df 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 ae27d2ce628..67db08c2086 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 595fb149f44..22ded41b914 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 6dbbe7549a3..7e039a40acd 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 db6bc121562..863203ad8d7 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 b52049cd631..13a99347807 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 654f0291461..df8becd9596 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 1975830e5a5..efd9c0194b2 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 be4f74fb3d9..ff2a7fc6a2b 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 e0e1a778c74..79f6ab0cf6f 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 e8e44ce2a87..b9c397bca6c 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 f975022aea8..e16f06f8528 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 b40397f194f..b148745f5a9 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 74aeb8c30f0..88e8e12add4 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 3f62731d521..83252358a74 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 d5d56154f35..a408ae3a46d 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 f09ad7de41b..d3282d70f66 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 53f5225ab7e..64ab91420fb 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 5cfd5e4f57b..aec9f1fa883 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 e5bd7efaca8..e02f8ccc868 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 dd4cd176dfc..44d31aec975 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
-- 
GitLab