diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4ba197f95e1904342d1505f8a481d58dbefc4eae..71311c2ce8932f9936a730dd04d0ab214906a8ca 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -38,14 +38,14 @@ variables:
     - rustc --version && cargo --version
 
 .rust_stable_armv7: &rust_stable_armv7
-  image: registry.duniter.org/docker/rust/armv7-builder:v0.0.4
+  image: registry.duniter.org/docker/rust/armv7-builder:v0.1
   tags:
     - redshift-rs-stable
   before_script:
     - rustc --version && cargo --version
 
 .rust_stable_win64: &rust_stable_win64
-  image: registry.duniter.org/docker/rust/win64-builder:v0.0.7
+  image: registry.duniter.org/docker/rust/win64-builder:v0.1.0
   tags:
     - redshift-rs-stable
   before_script:
diff --git a/lib/core/conf/Cargo.toml b/lib/core/conf/Cargo.toml
index 27d5f84f602ceaca372846313fda351c8b8d862c..6dabfbe281be94526c8e60bfad21f03381938634 100644
--- a/lib/core/conf/Cargo.toml
+++ b/lib/core/conf/Cargo.toml
@@ -4,6 +4,7 @@ version = "0.1.0-a0.1"
 authors = ["librelois <elois@ifee.fr>"]
 description = "Configuration module for the Duniter project."
 license = "AGPL-3.0"
+edition = "2018"
 
 [lib]
 path = "lib.rs"
diff --git a/lib/core/conf/keys.rs b/lib/core/conf/keys.rs
index dc487b5679c88aedcf26cd2a34cd54d75b44061e..e89a0ab6d5dba5983f9109badbb279cebd7295cb 100644
--- a/lib/core/conf/keys.rs
+++ b/lib/core/conf/keys.rs
@@ -24,8 +24,8 @@
 
 extern crate rpassword;
 
+use crate::*;
 use std::io;
-use *;
 
 #[derive(Debug, Copy, Clone)]
 /// Errors encountered by the wizard
diff --git a/lib/core/core/Cargo.toml b/lib/core/core/Cargo.toml
index d19224624c2505fcd3874b5609431dd3697d2f9d..9a89af790b4eafd54fdb6de26e667647a9ebadc9 100644
--- a/lib/core/core/Cargo.toml
+++ b/lib/core/core/Cargo.toml
@@ -4,6 +4,7 @@ version = "0.1.0-a0.1"
 authors = ["librelois <elois@ifee.fr>"]
 description = "Duniter-rs core."
 license = "AGPL-3.0"
+edition = "2018"
 
 [lib]
 path = "lib.rs"
diff --git a/lib/core/core/cli/mod.rs b/lib/core/core/cli/mod.rs
index 8bafca54acb2cd7e728883bbc51172f6b638f4fa..8e69af1c59ed9b9e7891e32944bb5aebe28b0df5 100644
--- a/lib/core/core/cli/mod.rs
+++ b/lib/core/core/cli/mod.rs
@@ -23,13 +23,13 @@ pub mod modules;
 pub mod reset;
 pub mod start;
 
-pub use cli::keys::KeysOpt;
-pub use dbex::*;
+pub use crate::cli::keys::KeysOpt;
+pub use crate::dbex::*;
+pub use crate::modules::*;
+pub use crate::reset::*;
+pub use crate::start::*;
 pub use duniter_network::cli::sync::SyncOpt;
 use log::Level;
-pub use modules::*;
-pub use reset::*;
-pub use start::*;
 
 #[derive(StructOpt, Debug)]
 #[structopt(
diff --git a/lib/core/core/cli/reset.rs b/lib/core/core/cli/reset.rs
index 0b112cf2a72112f60ade1af1266667db84937fe5..a7fc8a3435ad77b734119b5c1f0b2683779efc9a 100644
--- a/lib/core/core/cli/reset.rs
+++ b/lib/core/core/cli/reset.rs
@@ -17,7 +17,7 @@
 
 extern crate structopt;
 
-use cli::InvalidInput;
+use crate::cli::InvalidInput;
 use std::str::FromStr;
 
 #[derive(StructOpt, Debug, Copy, Clone)]
diff --git a/lib/core/core/lib.rs b/lib/core/core/lib.rs
index db66acf6d06cdbe4572b2712031f117a261fe7aa..3c1b77479f6fa95849755ddea9ca0a2232628524 100644
--- a/lib/core/core/lib.rs
+++ b/lib/core/core/lib.rs
@@ -60,8 +60,8 @@ use log::Level;
 use simplelog::*;
 //use std::error::Error;
 //use std::fmt::{Debug, Formatter};
-use cli::keys::*;
-use cli::*;
+use crate::cli::keys::*;
+use crate::cli::*;
 use std::fs;
 use std::fs::{File, OpenOptions};
 use std::sync::mpsc;
diff --git a/lib/core/message/Cargo.toml b/lib/core/message/Cargo.toml
index c0293fa5e0208fa67418e927a5e9013173c781d9..1e830241a4aca1502d762c448cfed9e824cc041c 100644
--- a/lib/core/message/Cargo.toml
+++ b/lib/core/message/Cargo.toml
@@ -4,6 +4,7 @@ version = "0.1.0-a0.1"
 authors = ["librelois <elois@ifee.fr>"]
 description = "message model for the Durs project."
 license = "AGPL-3.0"
+edition = "2018"
 
 [lib]
 path = "lib.rs"
diff --git a/lib/core/message/events.rs b/lib/core/message/events.rs
index 579548350eee68271998875ed7d7014f064adc29..fad3f21a457c8379375d7480bcd2379f32e7681f 100644
--- a/lib/core/message/events.rs
+++ b/lib/core/message/events.rs
@@ -13,10 +13,10 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
+use crate::*;
 use dubp_documents::v10::block::BlockDocument;
 use dubp_documents::*;
 use duniter_network::events::NetworkEvent;
-use *;
 
 /// The DURS event message.
 #[derive(Debug, Clone)]
diff --git a/lib/core/message/lib.rs b/lib/core/message/lib.rs
index de0476ac6b3eba1ff23d8315cf57ed65cd20fec0..9e53b74d5d691f426cebe7f490f90dd67f21ec74 100644
--- a/lib/core/message/lib.rs
+++ b/lib/core/message/lib.rs
@@ -48,9 +48,9 @@ pub mod requests;
 /// Define requests responses
 pub mod responses;
 
-use events::*;
-use requests::*;
-use responses::*;
+use crate::events::*;
+use crate::requests::*;
+use crate::responses::*;
 
 /// Message exchanged between Durs modules
 #[derive(Debug, Clone)]
diff --git a/lib/core/message/requests.rs b/lib/core/message/requests.rs
index 0e5e01076443c0cfc1484f2436efe77a7e948a8e..873874a752363869f002c9a18a43703a1a3ba631 100644
--- a/lib/core/message/requests.rs
+++ b/lib/core/message/requests.rs
@@ -13,11 +13,11 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
+use crate::*;
 use dubp_documents::BlockId;
 use duniter_network::requests::OldNetworkRequest;
 use dup_crypto::hashs::Hash;
 use dup_crypto::keys::*;
-use *;
 
 #[derive(Debug, Clone)]
 /// Modules request content
diff --git a/lib/core/module/Cargo.toml b/lib/core/module/Cargo.toml
index c91137a9fd66ef9c4f9b3bd4b0fabb05ef70229d..1cfbe9cb3e15294f699d5c77ae9efed9cf32c12c 100644
--- a/lib/core/module/Cargo.toml
+++ b/lib/core/module/Cargo.toml
@@ -4,6 +4,7 @@ version = "0.1.0-a0.1"
 authors = ["librelois <elois@duniter.org>"]
 description = "Modules model for the Duniter project."
 license = "AGPL-3.0"
+edition = "2018"
 
 [lib]
 path = "lib.rs"
diff --git a/lib/core/network/Cargo.toml b/lib/core/network/Cargo.toml
index 71dd0f4a8b10fa92dfd54ba75b7f60905f6701fc..41621d19bdcf68dff7046eaefb6e9f96b7161f55 100644
--- a/lib/core/network/Cargo.toml
+++ b/lib/core/network/Cargo.toml
@@ -4,6 +4,7 @@ version = "0.1.0-a0.1"
 authors = ["librelois <elois@duniter.org>"]
 description = "Network model for the Durs project."
 license = "AGPL-3.0"
+edition = "2018"
 
 [lib]
 path = "lib.rs"
diff --git a/lib/core/network/events.rs b/lib/core/network/events.rs
index 5cb4a8c6484eb5959d63afc931a62e1e2e1925a3..bf0398351256e8350888f21f5de2239eeee2cbc3 100644
--- a/lib/core/network/events.rs
+++ b/lib/core/network/events.rs
@@ -15,10 +15,10 @@
 
 //! Defined network events.
 
-use documents::*;
-use network_head::NetworkHead;
-use network_peer::PeerCard;
-use NodeFullId;
+use crate::documents::*;
+use crate::network_head::NetworkHead;
+use crate::network_peer::PeerCard;
+use crate::NodeFullId;
 
 #[derive(Debug, Clone)]
 /// Type containing a network event, each time a network event occurs it's relayed to all modules
diff --git a/lib/core/network/lib.rs b/lib/core/network/lib.rs
index 4b617557eb372a8dbe51aa3a6aaa5ec0cf5c34f1..cef3dfb5b8b9ae2de46247668c5a55bd2523ccfa 100644
--- a/lib/core/network/lib.rs
+++ b/lib/core/network/lib.rs
@@ -37,7 +37,7 @@ extern crate serde_json;
 #[macro_use]
 extern crate structopt;
 
-use cli::sync::SyncOpt;
+use crate::cli::sync::SyncOpt;
 use duniter_module::*;
 use durs_network_documents::network_endpoint::ApiFeatures;
 use durs_network_documents::network_head::NetworkHead;
diff --git a/lib/core/network/requests.rs b/lib/core/network/requests.rs
index bcf680a35c807afd83230e56f335d6977c0af45a..2f02a3fd8b47e3f24e994b834173dd8d8e133074 100644
--- a/lib/core/network/requests.rs
+++ b/lib/core/network/requests.rs
@@ -15,10 +15,9 @@
 
 //! Defined network requests.
 
-use documents::*;
+use crate::documents::*;
+use crate::*;
 use dubp_documents::Blockstamp;
-use duniter_module::*;
-use *;
 
 #[derive(Debug, Copy, Clone)]
 /// Type containing a request addressed to the network module
diff --git a/lib/modules/blockchain/blockchain-dal/Cargo.toml b/lib/modules/blockchain/blockchain-dal/Cargo.toml
index f91ec6ff740192a353b282cad1b535f08b13eedd..bfc3feb41723d63cd51992dcf2e353aa2f931070 100644
--- a/lib/modules/blockchain/blockchain-dal/Cargo.toml
+++ b/lib/modules/blockchain/blockchain-dal/Cargo.toml
@@ -4,6 +4,7 @@ version = "0.1.0-a0.1"
 authors = ["librelois <elois@ifee.fr>"]
 description = "Data Access Layer for Durs Blockchain module."
 license = "AGPL-3.0"
+edition = "2018"
 
 [lib]
 path = "lib.rs"
diff --git a/lib/modules/blockchain/blockchain-dal/balance.rs b/lib/modules/blockchain/blockchain-dal/balance.rs
index 0852960c41981a82348af8bb3ace8b103eecf002..6cacb241d9b9369662fe6f2d733b267e36d0eded 100644
--- a/lib/modules/blockchain/blockchain-dal/balance.rs
+++ b/lib/modules/blockchain/blockchain-dal/balance.rs
@@ -13,8 +13,8 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
-use sources::*;
-use *;
+use crate::sources::*;
+use crate::*;
 
 /// Get address balance
 pub fn get_address_balance(
diff --git a/lib/modules/blockchain/blockchain-dal/block.rs b/lib/modules/blockchain/blockchain-dal/block.rs
index 4698ae19113b0cf3dc4cc04631f0d3b78cb36e43..60ccb8a2e218dea4532978cdc1d213fe7c85d07d 100644
--- a/lib/modules/blockchain/blockchain-dal/block.rs
+++ b/lib/modules/blockchain/blockchain-dal/block.rs
@@ -14,13 +14,13 @@
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 use super::constants::MAX_FORKS;
+use crate::*;
 use dubp_documents::v10::BlockDocument;
 use dubp_documents::Document;
 use dubp_documents::{BlockHash, BlockId, Blockstamp, PreviousBlockstamp};
 use dup_crypto::keys::*;
 use durs_wot::NodeId;
 use std::collections::HashMap;
-use *;
 
 #[derive(Clone, Debug, Deserialize, Serialize)]
 /// A block as it is saved in a database
diff --git a/lib/modules/blockchain/blockchain-dal/certs.rs b/lib/modules/blockchain/blockchain-dal/certs.rs
index a28e545517fffb4bf8bffc5caa59465dd21be639..9edbf5a44fcc3b6e4afd2d291dc44f04595f6018 100644
--- a/lib/modules/blockchain/blockchain-dal/certs.rs
+++ b/lib/modules/blockchain/blockchain-dal/certs.rs
@@ -16,10 +16,10 @@
 extern crate dubp_documents;
 extern crate durs_wot;
 
+use crate::{BinDB, CertsExpirV10Datas, DALError};
 use dubp_documents::BlockId;
 use durs_wot::NodeId;
 use std::collections::HashMap;
-use {BinDB, CertsExpirV10Datas, DALError};
 
 /// Find certifications that emitted in indicated blocks expiring
 pub fn find_expire_certs(
diff --git a/lib/modules/blockchain/blockchain-dal/currency_params.rs b/lib/modules/blockchain/blockchain-dal/currency_params.rs
index c88d4a4544ce022ddcc774399f031e1b1598930b..a695f05f854379face2cae50a09e57919f2a4e3e 100644
--- a/lib/modules/blockchain/blockchain-dal/currency_params.rs
+++ b/lib/modules/blockchain/blockchain-dal/currency_params.rs
@@ -13,10 +13,10 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
-use constants::*;
+use crate::constants::*;
+use crate::*;
 use dubp_documents::v10::block::BlockV10Parameters;
 use dubp_documents::CurrencyName;
-use *;
 
 #[derive(Debug, Copy, Clone)]
 /// Curerncy parameters
diff --git a/lib/modules/blockchain/blockchain-dal/identity.rs b/lib/modules/blockchain/blockchain-dal/identity.rs
index be1d79e20b0e1c60af15c4ecc4c355f92a49e738..eec031d785f49dcd63e4c83920a55851c0bacc6a 100644
--- a/lib/modules/blockchain/blockchain-dal/identity.rs
+++ b/lib/modules/blockchain/blockchain-dal/identity.rs
@@ -13,13 +13,13 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
-use currency_params::CurrencyParameters;
+use crate::currency_params::CurrencyParameters;
+use crate::{BinDB, DALError, IdentitiesV10Datas, MsExpirV10Datas};
 use dubp_documents::v10::identity::IdentityDocument;
 use dubp_documents::{BlockId, Blockstamp};
 use dup_crypto::keys::*;
 use durs_wot::NodeId;
 use std::collections::HashMap;
-use {BinDB, DALError, IdentitiesV10Datas, MsExpirV10Datas};
 
 #[derive(Clone, Debug, Deserialize, Serialize)]
 /// Identity state
diff --git a/lib/modules/blockchain/blockchain-dal/lib.rs b/lib/modules/blockchain/blockchain-dal/lib.rs
index 43eca14dd1fb017472d32e2a0d3284ec6f248f3b..d7c45790a2fa80e89fb95ed8f7add509fe09e97f 100644
--- a/lib/modules/blockchain/blockchain-dal/lib.rs
+++ b/lib/modules/blockchain/blockchain-dal/lib.rs
@@ -91,10 +91,10 @@ use std::fs;
 use std::panic::UnwindSafe;
 use std::path::PathBuf;
 
-use block::DALBlock;
-use identity::DALIdentity;
-use sources::{SourceAmount, UTXOContentV10, UTXOIndexV10};
-use writers::transaction::DALTxV10;
+use crate::block::DALBlock;
+use crate::identity::DALIdentity;
+use crate::sources::{SourceAmount, UTXOContentV10, UTXOIndexV10};
+use crate::writers::transaction::DALTxV10;
 
 #[derive(Debug, Deserialize, Copy, Clone, Ord, PartialEq, PartialOrd, Eq, Hash, Serialize)]
 /// Each fork has a unique identifier. The local blockchain (also called local branch) has ForkId equal to zero.
diff --git a/lib/modules/blockchain/blockchain-dal/tools.rs b/lib/modules/blockchain/blockchain-dal/tools.rs
index 12a91949f8c04e64ad549bc1f3d0a085946c40d4..0800e127f7248e6ef3d05f57eaa1fd2133cb44fb 100644
--- a/lib/modules/blockchain/blockchain-dal/tools.rs
+++ b/lib/modules/blockchain/blockchain-dal/tools.rs
@@ -113,15 +113,14 @@ pub fn compute_distances<T: WebOfTrust + Sync>(
                 },
             )
             .expect("Fatal Error: compute_distance return None !");
-        let mut distance = ((f64::from(distance_datas.success)
+        let distance = ((f64::from(distance_datas.success)
             / (x_percent * f64::from(distance_datas.sentries)))
             * 100.0) as usize;
         distances.push(distance);
         average_distance += distance;
-        let mut connectivity =
-            ((f64::from(distance_datas.success - distance_datas.success_at_border)
-                / (x_percent * f64::from(distance_datas.sentries)))
-                * 100.0) as usize;
+        let connectivity = ((f64::from(distance_datas.success - distance_datas.success_at_border)
+            / (x_percent * f64::from(distance_datas.sentries)))
+            * 100.0) as usize;
         connectivities.push(connectivity);
         average_connectivity += connectivity;
     }
diff --git a/lib/modules/blockchain/blockchain-dal/writers/block.rs b/lib/modules/blockchain/blockchain-dal/writers/block.rs
index 46a6bb1188086f92448c1cc2c121c0f61147467c..d2d975ae8a647ed2a5a6b2cfa1afcffcb94a44d8 100644
--- a/lib/modules/blockchain/blockchain-dal/writers/block.rs
+++ b/lib/modules/blockchain/blockchain-dal/writers/block.rs
@@ -13,12 +13,12 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
-use block::DALBlock;
+use crate::block::DALBlock;
+use crate::ForkId;
+use crate::{BinDB, DALError, ForksBlocksV10Datas, ForksV10Datas, LocalBlockchainV10Datas};
 use dubp_documents::Document;
 use dubp_documents::{BlockHash, BlockId, PreviousBlockstamp};
 use std::collections::HashMap;
-use ForkId;
-use {BinDB, DALError, ForksBlocksV10Datas, ForksV10Datas, LocalBlockchainV10Datas};
 
 /// Write DALBlock in databases
 pub fn write(
diff --git a/lib/modules/blockchain/blockchain-dal/writers/certification.rs b/lib/modules/blockchain/blockchain-dal/writers/certification.rs
index c8be519568997316bea43c02ddcdf1db4e3a76f9..de0f052b7bc14d2b00b65764dfa5f5e16dd23502 100644
--- a/lib/modules/blockchain/blockchain-dal/writers/certification.rs
+++ b/lib/modules/blockchain/blockchain-dal/writers/certification.rs
@@ -13,12 +13,12 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
-use currency_params::CurrencyParameters;
+use crate::currency_params::CurrencyParameters;
+use crate::{BinDB, CertsExpirV10Datas, DALError, IdentitiesV10Datas};
 use dubp_documents::v10::certification::CompactCertificationDocument;
 use dubp_documents::BlockId;
 use dup_crypto::keys::*;
 use durs_wot::NodeId;
-use {BinDB, CertsExpirV10Datas, DALError, IdentitiesV10Datas};
 
 /// Apply "certification" event in databases
 pub fn write_certification(
diff --git a/lib/modules/blockchain/blockchain-dal/writers/dividend.rs b/lib/modules/blockchain/blockchain-dal/writers/dividend.rs
index 9256ae655d9c0dba8a11252bbb0fcce607a39ffe..94ca2645478571c55aba2bda26915fc006e78919 100644
--- a/lib/modules/blockchain/blockchain-dal/writers/dividend.rs
+++ b/lib/modules/blockchain/blockchain-dal/writers/dividend.rs
@@ -13,12 +13,12 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
+use crate::sources::SourceAmount;
+use crate::*;
 use dubp_documents::v10::transaction::*;
 use dubp_documents::BlockId;
 use dup_crypto::keys::PubKey;
-use sources::SourceAmount;
 use std::collections::{HashMap, HashSet};
-use *;
 
 /// Apply UD creation in databases
 pub fn create_du(
diff --git a/lib/modules/blockchain/blockchain-dal/writers/identity.rs b/lib/modules/blockchain/blockchain-dal/writers/identity.rs
index 3a9654640603341ce0d3ecd3a0bd2fe3fdafacaf..fe9d99837d6f86ce50e69a247b0713299b034fb3 100644
--- a/lib/modules/blockchain/blockchain-dal/writers/identity.rs
+++ b/lib/modules/blockchain/blockchain-dal/writers/identity.rs
@@ -13,14 +13,14 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
-use currency_params::CurrencyParameters;
+use crate::currency_params::CurrencyParameters;
+use crate::identity::{DALIdentity, DALIdentityState};
+use crate::{BinDB, DALError, IdentitiesV10Datas, MsExpirV10Datas};
 use dubp_documents::v10::identity::IdentityDocument;
 use dubp_documents::Document;
 use dubp_documents::{BlockId, Blockstamp};
 use dup_crypto::keys::PubKey;
 use durs_wot::NodeId;
-use identity::{DALIdentity, DALIdentityState};
-use {BinDB, DALError, IdentitiesV10Datas, MsExpirV10Datas};
 
 /// Remove identity from databases
 pub fn revert_create_identity(
diff --git a/lib/modules/blockchain/blockchain-dal/writers/requests.rs b/lib/modules/blockchain/blockchain-dal/writers/requests.rs
index 73ecb83e7fb95c2f09a11f28c49591c8ae768b92..2ee202dc001eede25223521c7c22286537d05f38 100644
--- a/lib/modules/blockchain/blockchain-dal/writers/requests.rs
+++ b/lib/modules/blockchain/blockchain-dal/writers/requests.rs
@@ -13,18 +13,18 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
-use block::DALBlock;
-use currency_params::CurrencyParameters;
+use crate::block::DALBlock;
+use crate::currency_params::CurrencyParameters;
+use crate::identity::DALIdentity;
+use crate::sources::SourceAmount;
+use crate::writers::transaction::DALTxV10;
+use crate::*;
 use dubp_documents::v10::certification::CompactCertificationDocument;
 use dubp_documents::v10::identity::IdentityDocument;
 use dubp_documents::Blockstamp;
 use dup_crypto::keys::PubKey;
 use durs_wot::NodeId;
-use identity::DALIdentity;
-use sources::SourceAmount;
 use std::ops::Deref;
-use writers::transaction::DALTxV10;
-use *;
 
 #[derive(Debug, Clone)]
 /// Contain a pending write request for databases
diff --git a/lib/modules/blockchain/blockchain-dal/writers/transaction.rs b/lib/modules/blockchain/blockchain-dal/writers/transaction.rs
index 9696d68dfef76388cd67fcd926253be7be2440f5..338f0579de56273d8f986c103c3e1289b5685f19 100644
--- a/lib/modules/blockchain/blockchain-dal/writers/transaction.rs
+++ b/lib/modules/blockchain/blockchain-dal/writers/transaction.rs
@@ -15,8 +15,8 @@
 
 use dubp_documents::v10::transaction::*;
 
-use sources::{SourceAmount, SourceIndexV10, UTXOIndexV10, UTXOV10};
-use *;
+use crate::sources::{SourceAmount, SourceIndexV10, UTXOIndexV10, UTXOV10};
+use crate::*;
 
 #[derive(Debug, Copy, Clone)]
 /// Transaction error
diff --git a/lib/modules/blockchain/blockchain/Cargo.toml b/lib/modules/blockchain/blockchain/Cargo.toml
index a45de95c2730f892fa83a927ee22de16eeb34e9e..c8bf0556cf33e509b70c9ac80966fc0ca8101a72 100644
--- a/lib/modules/blockchain/blockchain/Cargo.toml
+++ b/lib/modules/blockchain/blockchain/Cargo.toml
@@ -4,6 +4,7 @@ version = "0.1.0-a0.1"
 authors = ["librelois <elois@ifee.fr>"]
 description = "Blockchain module for the Durs project."
 license = "AGPL-3.0"
+edition = "2018"
 
 [lib]
 path = "lib.rs"
diff --git a/lib/modules/blockchain/blockchain/check_and_apply_block.rs b/lib/modules/blockchain/blockchain/check_and_apply_block.rs
index 4c01613c7a6f8eddb341e079a1c1bc2ab4a1418a..af4ee09e9397c4b6f47f1f3fe0685ec745fd726c 100644
--- a/lib/modules/blockchain/blockchain/check_and_apply_block.rs
+++ b/lib/modules/blockchain/blockchain/check_and_apply_block.rs
@@ -15,14 +15,14 @@
 
 use std::collections::HashMap;
 
-use apply_valid_block::*;
+use crate::apply_valid_block::*;
+use crate::*;
 use dubp_documents::Document;
 use dubp_documents::{BlockHash, BlockId, Blockstamp, PreviousBlockstamp};
 use duniter_network::documents::NetworkBlock;
 use dup_crypto::keys::*;
 use durs_blockchain_dal::block::DALBlock;
 use durs_blockchain_dal::*;
-use *;
 
 #[derive(Debug, Copy, Clone)]
 pub enum BlockError {
diff --git a/lib/modules/blockchain/blockchain/dbex.rs b/lib/modules/blockchain/blockchain/dbex.rs
index 43cc010887821bf58fcbed1bf61f09dd78562d00..1a388f6c33cecf2fe7eac4bb4cc16d7691546f8f 100644
--- a/lib/modules/blockchain/blockchain/dbex.rs
+++ b/lib/modules/blockchain/blockchain/dbex.rs
@@ -13,6 +13,7 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
+use crate::*;
 use dubp_documents::v10::transaction::*;
 use duniter_module::DuniterConf;
 use dup_crypto::keys::*;
@@ -20,7 +21,6 @@ use durs_blockchain_dal::identity::DALIdentity;
 use durs_wot::data::rusty::RustyWebOfTrust;
 use durs_wot::operations::distance::{DistanceCalculator, WotDistance, WotDistanceParameters};
 use std::time::*;
-use *;
 
 #[derive(Debug, Clone)]
 /// Query for wot databases explorer
diff --git a/lib/modules/blockchain/blockchain/lib.rs b/lib/modules/blockchain/blockchain/lib.rs
index d3db2de64a340e0498f8fd32e11bde73d62af129..e97b7df46a89f816f1e8fd7cbeddad6870404984 100644
--- a/lib/modules/blockchain/blockchain/lib.rs
+++ b/lib/modules/blockchain/blockchain/lib.rs
@@ -59,9 +59,9 @@ use std::str;
 use std::sync::mpsc;
 use std::time::{Duration, SystemTime, UNIX_EPOCH};
 
-use apply_valid_block::*;
-use check_and_apply_block::*;
-pub use dbex::{DBExQuery, DBExTxQuery, DBExWotQuery};
+use crate::apply_valid_block::*;
+use crate::check_and_apply_block::*;
+pub use crate::dbex::{DBExQuery, DBExTxQuery, DBExWotQuery};
 use dubp_documents::v10::{BlockDocument, V10Document};
 use dubp_documents::*;
 use dubp_documents::{DUBPDocument, Document};
diff --git a/lib/modules/blockchain/blockchain/sync.rs b/lib/modules/blockchain/blockchain/sync.rs
index 787cce69aadefea76db242772fe7433fb091ddea..802eb43a0042c6119baa6c5fbb3723bc8c019e0e 100644
--- a/lib/modules/blockchain/blockchain/sync.rs
+++ b/lib/modules/blockchain/blockchain/sync.rs
@@ -20,6 +20,8 @@ extern crate threadpool;
 
 use self::pbr::ProgressBar;
 use self::threadpool::ThreadPool;
+use crate::ts_parsers::*;
+use crate::*;
 use dubp_documents::{BlockHash, BlockId};
 use duniter_network::documents::NetworkBlock;
 use dup_crypto::hashs::Hash;
@@ -34,8 +36,6 @@ use std::ops::Deref;
 use std::sync::mpsc;
 use std::thread;
 use std::time::SystemTime;
-use ts_parsers::*;
-use *;
 
 /// Number of sync jobs
 pub static NB_SYNC_JOBS: &'static usize = &4;
diff --git a/lib/modules/blockchain/blockchain/ts_parsers.rs b/lib/modules/blockchain/blockchain/ts_parsers.rs
index 8836d084ad3a6d500aa9a9805b9f8995afcb67ab..b5f6166b98e25de11a7f8163c23280cb008e59f7 100644
--- a/lib/modules/blockchain/blockchain/ts_parsers.rs
+++ b/lib/modules/blockchain/blockchain/ts_parsers.rs
@@ -16,6 +16,7 @@
 extern crate serde_json;
 extern crate sqlite;
 
+use crate::sync::BlockHeader;
 use dubp_documents::v10::block::{BlockV10Parameters, TxDocOrTxHash};
 use dubp_documents::v10::identity::*;
 use dubp_documents::v10::membership::*;
@@ -28,7 +29,6 @@ use duniter_network::documents::{NetworkBlock, NetworkBlockV10};
 use dup_crypto::hashs::Hash;
 use dup_crypto::keys::*;
 use std::str::FromStr;
-use sync::BlockHeader;
 
 #[derive(Debug, Copy, Clone, PartialEq, Eq)]
 /// MembershipParseError
diff --git a/lib/modules/skeleton/Cargo.toml b/lib/modules/skeleton/Cargo.toml
index a83af23f136b99c12acd4ced66765cd7d8d810ed..5f039cb45e4de1ded03b861e117010ff165027ba 100644
--- a/lib/modules/skeleton/Cargo.toml
+++ b/lib/modules/skeleton/Cargo.toml
@@ -4,6 +4,7 @@ version = "0.1.0"
 authors = ["name <mail@domain.tld>"]
 description = "Module template to copy to create a new Durs module."
 license = "AGPL-3.0"
+edition = "2018"
 
 [lib]
 path = "lib.rs"
diff --git a/lib/modules/tui/Cargo.toml b/lib/modules/tui/Cargo.toml
index c469074b5353643377f837f55df02b3e9495f921..e4e8f731e084f4e7aa4ae9d4d4b4c93a8f013445 100644
--- a/lib/modules/tui/Cargo.toml
+++ b/lib/modules/tui/Cargo.toml
@@ -4,6 +4,7 @@ version = "0.1.0-a0.1"
 authors = ["librelois <elois@ifee.fr>"]
 description = "Terminal user interface for Duniter-Rs."
 license = "AGPL-3.0"
+edition = "2018"
 
 [lib]
 path = "lib.rs"
diff --git a/lib/modules/ws2p-v1-legacy/Cargo.toml b/lib/modules/ws2p-v1-legacy/Cargo.toml
index 8d5d0df7d29f74477c03846d2e60e8f9db033ca2..3efeee126d99c48b96c4d8834bfec51954879649 100644
--- a/lib/modules/ws2p-v1-legacy/Cargo.toml
+++ b/lib/modules/ws2p-v1-legacy/Cargo.toml
@@ -4,6 +4,7 @@ version = "0.1.0-a0.1"
 authors = ["librelois <elois@ifee.fr>"]
 description = "WebSocketToPeer API for the Durs project."
 license = "AGPL-3.0"
+edition = "2018"
 
 [lib]
 path = "lib.rs"
diff --git a/lib/modules/ws2p-v1-legacy/datas.rs b/lib/modules/ws2p-v1-legacy/datas.rs
index 34c4602eba7aa7eef1d0c10209d41d34057873d6..4d468040630d996b9ef01b9f7024bae268b6b9b2 100644
--- a/lib/modules/ws2p-v1-legacy/datas.rs
+++ b/lib/modules/ws2p-v1-legacy/datas.rs
@@ -13,7 +13,8 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
-use constants::*;
+use crate::constants::*;
+use crate::*;
 use dubp_documents::Blockstamp;
 use duniter_network::*;
 use dup_crypto::keys::*;
@@ -24,7 +25,6 @@ use durs_network_documents::network_head::*;
 use durs_network_documents::*;
 use std::collections::HashSet;
 use std::sync::mpsc;
-use *;
 
 #[derive(Debug)]
 pub struct WS2PModuleDatas {
@@ -129,7 +129,7 @@ impl WS2PModuleDatas {
             let blockstamps_occurences_copy = blockstamps_occurences.clone();
             match blockstamps_occurences_copy.get(&head.blockstamp()) {
                 Some(occurences) => {
-                    let mut occurences_mut = blockstamps_occurences
+                    let occurences_mut = blockstamps_occurences
                         .get_mut(&head.blockstamp())
                         .expect("WS2P: Fail to get_mut blockstamps_occurences !");
                     *occurences_mut += 1;
diff --git a/lib/modules/ws2p-v1-legacy/heads.rs b/lib/modules/ws2p-v1-legacy/heads.rs
index 33349c894592e0e947a30d1b35df02c86c056329..209bf147ba74028f15fb94510fad402dca0487ed 100644
--- a/lib/modules/ws2p-v1-legacy/heads.rs
+++ b/lib/modules/ws2p-v1-legacy/heads.rs
@@ -13,9 +13,9 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
+use crate::*;
 use dubp_documents::Blockstamp;
 use durs_network_documents::network_head_v2::*;
-use *;
 
 pub fn generate_my_head(
     network_keypair: &KeyPairEnum,
diff --git a/lib/modules/ws2p-v1-legacy/lib.rs b/lib/modules/ws2p-v1-legacy/lib.rs
index d2c52768e5a86866d01fd420f9795eb80602b8ec..ced1bf9af805cdc7ce1d4df9df7c545e49579658 100644
--- a/lib/modules/ws2p-v1-legacy/lib.rs
+++ b/lib/modules/ws2p-v1-legacy/lib.rs
@@ -60,10 +60,14 @@ pub mod ws2p_connection;
 pub mod ws2p_db;
 pub mod ws2p_requests;
 
-use ack_message::WS2PAckMessageV1;
-use connect_message::WS2PConnectMessageV1;
-use constants::*;
-use datas::*;
+use crate::ack_message::WS2PAckMessageV1;
+use crate::connect_message::WS2PConnectMessageV1;
+use crate::constants::*;
+use crate::datas::*;
+use crate::ok_message::WS2POkMessageV1;
+use crate::parsers::blocks::parse_json_block;
+use crate::ws2p_connection::*;
+use crate::ws2p_requests::network_request_to_json;
 use dubp_documents::Blockstamp;
 use duniter_conf::DuRsConf;
 use duniter_module::*;
@@ -80,8 +84,6 @@ use durs_message::*;
 use durs_network_documents::network_endpoint::*;
 use durs_network_documents::network_head::*;
 use durs_network_documents::*;
-use ok_message::WS2POkMessageV1;
-use parsers::blocks::parse_json_block;
 use std::collections::HashMap;
 use std::ops::Deref;
 use std::path::PathBuf;
@@ -89,8 +91,6 @@ use std::sync::mpsc;
 use std::thread;
 use std::time::{Duration, SystemTime, UNIX_EPOCH};
 use ws::Message;
-use ws2p_connection::*;
-use ws2p_requests::network_request_to_json;
 
 #[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
 /// WS2P Configuration
diff --git a/lib/modules/ws2p-v1-legacy/ws2p_connection.rs b/lib/modules/ws2p-v1-legacy/ws2p_connection.rs
index 3b85d048873b8b8f64202f270894f7d46cce8c07..9e9098a9560a44ff7ac283e3f66b7a64285d1e43 100644
--- a/lib/modules/ws2p-v1-legacy/ws2p_connection.rs
+++ b/lib/modules/ws2p-v1-legacy/ws2p_connection.rs
@@ -1,17 +1,17 @@
-use constants::*;
+use crate::constants::*;
+use crate::parsers::blocks::parse_json_block;
+use crate::*;
 use duniter_module::ModuleReqId;
 use duniter_network::documents::BlockchainDocument;
 use dup_crypto::keys::*;
 use durs_network_documents::network_endpoint::{EndpointV1, NetworkEndpointApi};
 use durs_network_documents::NodeId;
-use parsers::blocks::parse_json_block;
 use rand::Rng;
 use std::sync::mpsc;
 use ws::deflate::DeflateBuilder;
 #[allow(deprecated)]
 use ws::util::{Timeout, Token};
 use ws::{connect, CloseCode, Frame, Handler, Handshake, Message, Sender};
-use *;
 
 const CONNECT: Token = Token(1);
 const EXPIRE: Token = Token(2);
diff --git a/lib/modules/ws2p/ws2p-messages/Cargo.toml b/lib/modules/ws2p/ws2p-messages/Cargo.toml
index b6a259b65ca5122d6755c13141f37214ec7fd027..92f0aefca3f4b5c1afb99213286f8c6e894a7615 100644
--- a/lib/modules/ws2p/ws2p-messages/Cargo.toml
+++ b/lib/modules/ws2p/ws2p-messages/Cargo.toml
@@ -4,6 +4,7 @@ version = "0.1.0-a0.1"
 authors = ["librelois <elois@ifee.fr>"]
 description = "Handles WebSocketToPeer API Messages."
 license = "AGPL-3.0"
+edition = "2018"
 
 [lib]
 path = "lib.rs"
diff --git a/lib/modules/ws2p/ws2p-messages/lib.rs b/lib/modules/ws2p/ws2p-messages/lib.rs
index 01c4a5c1f7b25aeb8ecebad77cab4d5c3d4587d4..8248aa0489098f73876e19362b14db7e8c1b6841 100644
--- a/lib/modules/ws2p/ws2p-messages/lib.rs
+++ b/lib/modules/ws2p/ws2p-messages/lib.rs
@@ -43,10 +43,10 @@ extern crate durs_network_documents;
 /// WS2Pv2 Messages
 pub mod v2;
 
+use crate::v2::WS2Pv2Message;
 use dup_crypto::hashs::Hash;
 use dup_crypto::keys::bin_signable::BinSignable;
 use dup_crypto::keys::*;
-use v2::WS2Pv2Message;
 
 #[derive(Debug, Clone, Eq, PartialEq, Serialize, Deserialize)]
 /// WS2Pv2Message
@@ -152,6 +152,8 @@ impl<'de> BinSignable<'de> for WS2PMessage {
 
 #[cfg(test)]
 mod tests {
+    use crate::v2::payload_container::WS2Pv2MessagePayload;
+    use crate::v2::WS2Pv2Message;
     use bincode;
     use bincode::{deserialize, serialize};
     use dubp_documents::v10::certification::*;
@@ -163,8 +165,6 @@ mod tests {
     use durs_network_documents::*;
     use std::net::Ipv4Addr;
     use std::str::FromStr;
-    use v2::payload_container::WS2Pv2MessagePayload;
-    use v2::WS2Pv2Message;
 
     pub fn keypair1() -> ed25519::KeyPair {
         ed25519::KeyPairFromSaltedPasswordGenerator::with_default_parameters().generate(
diff --git a/lib/modules/ws2p/ws2p-messages/v2/connect.rs b/lib/modules/ws2p/ws2p-messages/v2/connect.rs
index 61f4cf08caaaa1faace4b5d8c75833aeb848b390..71ce3d80f5203fc9689ab6cec1bcc30c806cb33d 100644
--- a/lib/modules/ws2p/ws2p-messages/v2/connect.rs
+++ b/lib/modules/ws2p/ws2p-messages/v2/connect.rs
@@ -153,9 +153,9 @@ pub fn generate_connect_message(
 mod tests {
     use super::super::*;
     use super::*;
+    use crate::tests::*;
     use dubp_documents::Blockstamp;
     use dup_crypto::keys::text_signable::TextSignable;
-    use tests::*;
 
     #[test]
     fn test_ws2p_connect_flags() {
diff --git a/lib/modules/ws2p/ws2p-messages/v2/mod.rs b/lib/modules/ws2p/ws2p-messages/v2/mod.rs
index 3b68fda8eb7625df012442680d610f6c5affac73..3b424c6b8525bd6047c37abfdb92f507ae708b3f 100644
--- a/lib/modules/ws2p/ws2p-messages/v2/mod.rs
+++ b/lib/modules/ws2p/ws2p-messages/v2/mod.rs
@@ -28,13 +28,13 @@ pub mod requests;
 /// WS2P v2 SECRET_FLAGS Message
 pub mod secret_flags;
 
+use crate::v2::payload_container::*;
+use crate::WS2PMessage;
 use dubp_documents::CurrencyName;
 use dup_crypto::hashs::Hash;
 use dup_crypto::keys::bin_signable::BinSignable;
 use dup_crypto::keys::*;
 use durs_network_documents::NodeId;
-use v2::payload_container::*;
-use WS2PMessage;
 
 /// WS2P v2 message metadata size
 pub static WS2P_V2_MESSAGE_METADATA_SIZE: &'static usize = &144;
@@ -106,8 +106,8 @@ impl<'de> BinSignable<'de> for WS2Pv2Message {
 #[cfg(test)]
 mod tests {
     use super::*;
+    use crate::tests::*;
     use dup_crypto::keys::text_signable::TextSignable;
-    use tests::*;
 
     #[test]
     fn test_ws2p_message_ack() {
diff --git a/lib/modules/ws2p/ws2p-messages/v2/ok.rs b/lib/modules/ws2p/ws2p-messages/v2/ok.rs
index a560ae6dd16f40b8f5f889b4af67036e274bb082..f0d13e2280c2a2254af2fff149a91c1582107f92 100644
--- a/lib/modules/ws2p/ws2p-messages/v2/ok.rs
+++ b/lib/modules/ws2p/ws2p-messages/v2/ok.rs
@@ -48,9 +48,9 @@ pub struct WS2Pv2SyncTarget {
 mod tests {
     use super::super::*;
     use super::*;
+    use crate::tests::*;
     use dubp_documents::Blockstamp;
     use std::num::NonZeroU16;
-    use tests::*;
 
     #[test]
     fn test_ws2p_message_ok() {
diff --git a/lib/modules/ws2p/ws2p-messages/v2/req_responses.rs b/lib/modules/ws2p/ws2p-messages/v2/req_responses.rs
index 0e8d1e2885d211b12f4c264920bac5a4a717bf2a..4013a2192cdb7d0cf85d0b43bcb74de575ba9411 100644
--- a/lib/modules/ws2p/ws2p-messages/v2/req_responses.rs
+++ b/lib/modules/ws2p/ws2p-messages/v2/req_responses.rs
@@ -62,8 +62,8 @@ pub struct WotPoolFolder {
 mod tests {
     use super::super::*;
     use super::*;
+    use crate::tests::*;
     use dubp_documents::Blockstamp;
-    use tests::*;
 
     #[test]
     fn test_ws2p_message_req_res_none() {
diff --git a/lib/modules/ws2p/ws2p-messages/v2/requests.rs b/lib/modules/ws2p/ws2p-messages/v2/requests.rs
index 7fbbd5990d9f9890c11b41146d9f28d467f026d1..8a10db1a0f45a93a6593ae2f9e8b3db5b933c95d 100644
--- a/lib/modules/ws2p/ws2p-messages/v2/requests.rs
+++ b/lib/modules/ws2p/ws2p-messages/v2/requests.rs
@@ -74,8 +74,8 @@ impl WS2Pv2RequestBody {
 mod tests {
     use super::super::*;
     use super::*;
+    use crate::tests::*;
     use dubp_documents::Blockstamp;
-    use tests::*;
 
     #[test]
     fn test_ws2p_message_request() {
diff --git a/lib/modules/ws2p/ws2p-messages/v2/secret_flags.rs b/lib/modules/ws2p/ws2p-messages/v2/secret_flags.rs
index 997e465e063ab7e81d37f9edc2ce0616c81baa83..113dbce3ec136ea3c8db39f9cf7ac91d08cc7653 100644
--- a/lib/modules/ws2p/ws2p-messages/v2/secret_flags.rs
+++ b/lib/modules/ws2p/ws2p-messages/v2/secret_flags.rs
@@ -68,7 +68,7 @@ impl Default for WS2Pv2SecretFlagsMsg {
 mod tests {
     use super::super::*;
     use super::*;
-    use tests::*;
+    use crate::tests::*;
 
     #[test]
     fn test_ws2p_message_secret_flags() {
diff --git a/lib/modules/ws2p/ws2p/Cargo.toml b/lib/modules/ws2p/ws2p/Cargo.toml
index e2ecfdb77db02568e335a109b6acf5f327e05776..ebf080dc818fa32ef952aa3ae7717c2f74880dea 100644
--- a/lib/modules/ws2p/ws2p/Cargo.toml
+++ b/lib/modules/ws2p/ws2p/Cargo.toml
@@ -4,6 +4,7 @@ version = "0.1.0-a0.1"
 authors = ["librelois <elois@ifee.fr>"]
 description = "WebSocketToPeer API for DURS Project."
 license = "AGPL-3.0"
+edition = "2018"
 
 [lib]
 path = "src/lib.rs"
diff --git a/lib/modules/ws2p/ws2p/src/controllers/handler/connect_msg.rs b/lib/modules/ws2p/ws2p/src/controllers/handler/connect_msg.rs
index 9fa049599d007b5c4b1df4370b69777f98887281..737d507b58559e27019c76e8b602799e91f91a3f 100644
--- a/lib/modules/ws2p/ws2p/src/controllers/handler/connect_msg.rs
+++ b/lib/modules/ws2p/ws2p/src/controllers/handler/connect_msg.rs
@@ -15,9 +15,9 @@
 
 //! Process WS2P CONNECT mesage.
 
-use controllers::handler::*;
-use controllers::ws::CloseCode;
-use controllers::*;
+use crate::controllers::handler::*;
+use crate::controllers::ws::CloseCode;
+use crate::controllers::*;
 use durs_network_documents::NodeFullId;
 use durs_ws2p_messages::v2::connect::WS2Pv2ConnectMsg;
 //use services::Ws2pServiceSender;
diff --git a/lib/modules/ws2p/ws2p/src/controllers/handler/mod.rs b/lib/modules/ws2p/ws2p/src/controllers/handler/mod.rs
index dadff733234e9fe89524a3186a3f640939fb2a5e..3291df555c00a31cce36fd4c5e4d211ee942bcb0 100644
--- a/lib/modules/ws2p/ws2p/src/controllers/handler/mod.rs
+++ b/lib/modules/ws2p/ws2p/src/controllers/handler/mod.rs
@@ -19,19 +19,19 @@ pub mod connect_msg;
 
 extern crate serde_json;
 
-use constants::*;
-use controllers::ws::{util::Token, CloseCode, /*Frame,*/ Handler, Handshake, Message};
-use controllers::*;
-use services::*;
+use crate::constants::*;
+use crate::controllers::ws::{util::Token, CloseCode, /*Frame,*/ Handler, Handshake, Message};
+use crate::controllers::*;
+use crate::services::*;
 //use dup_crypto::keys::KeyPairEnum;
 use dubp_documents::CurrencyName;
 use durs_network_documents::NodeFullId;
 //use durs_ws2p_messages::v2::api_features::WS2PFeatures;
+use crate::services::Ws2pServiceSender;
 use durs_ws2p_messages::v2::connect::generate_connect_message;
 use durs_ws2p_messages::v2::payload_container::WS2Pv2MessagePayload;
 use durs_ws2p_messages::v2::WS2Pv2Message;
 use durs_ws2p_messages::WS2PMessage;
-use services::Ws2pServiceSender;
 use std::net::SocketAddr;
 use std::ops::Deref;
 use std::sync::mpsc;
diff --git a/lib/modules/ws2p/ws2p/src/controllers/incoming_connections/mod.rs b/lib/modules/ws2p/ws2p/src/controllers/incoming_connections/mod.rs
index 4a661480231337b390b9d5c653c814e7d939f8f9..0113d676242d75001d1785dfd26f4c0b2820ba5c 100644
--- a/lib/modules/ws2p/ws2p/src/controllers/incoming_connections/mod.rs
+++ b/lib/modules/ws2p/ws2p/src/controllers/incoming_connections/mod.rs
@@ -17,11 +17,11 @@
 
 use dubp_documents::CurrencyName;
 //use duniter_module::ModuleReqId;
-use controllers::handler::Ws2pConnectionHandler;
-use controllers::ws::deflate::DeflateBuilder;
-use controllers::ws::listen;
-use controllers::*;
-use services::*;
+use crate::controllers::handler::Ws2pConnectionHandler;
+use crate::controllers::ws::deflate::DeflateBuilder;
+use crate::controllers::ws::listen;
+use crate::controllers::*;
+use crate::services::*;
 //use duniter_network::*;
 use durs_ws2p_messages::v2::connect::WS2Pv2ConnectType;
 use std::sync::mpsc;
diff --git a/lib/modules/ws2p/ws2p/src/controllers/outgoing_connections/mod.rs b/lib/modules/ws2p/ws2p/src/controllers/outgoing_connections/mod.rs
index 9f7f13eba51e761b2a6ae5d0ae2fa3a3a46ac2ab..5247ac2d9943efb2ffe0e5809e1570e30bbd708d 100644
--- a/lib/modules/ws2p/ws2p/src/controllers/outgoing_connections/mod.rs
+++ b/lib/modules/ws2p/ws2p/src/controllers/outgoing_connections/mod.rs
@@ -17,13 +17,13 @@
 
 use dubp_documents::CurrencyName;
 //use duniter_module::ModuleReqId;
-use controllers::handler::Ws2pConnectionHandler;
-use controllers::ws::connect;
-use controllers::ws::deflate::DeflateBuilder;
-use controllers::*;
+use crate::controllers::handler::Ws2pConnectionHandler;
+use crate::controllers::ws::connect;
+use crate::controllers::ws::deflate::DeflateBuilder;
+use crate::controllers::*;
+use crate::services::*;
 use durs_network_documents::network_endpoint::EndpointEnum;
 use durs_network_documents::NodeFullId;
-use services::*;
 //use duniter_network::*;
 use durs_ws2p_messages::v2::connect::WS2Pv2ConnectType;
 use std::sync::mpsc;
diff --git a/lib/modules/ws2p/ws2p/src/lib.rs b/lib/modules/ws2p/ws2p/src/lib.rs
index e50e31216eefc17be44b46c49aecbb2191b7b67b..42c049b01b27f941301ee8946ab6310a287acf4a 100644
--- a/lib/modules/ws2p/ws2p/src/lib.rs
+++ b/lib/modules/ws2p/ws2p/src/lib.rs
@@ -49,7 +49,7 @@ pub mod controllers;
 mod generate_peer;
 pub mod services;
 
-use constants::*;
+use crate::constants::*;
 use duniter_conf::DuRsConf;
 use duniter_module::*;
 use duniter_network::cli::sync::SyncOpt;
diff --git a/lib/modules/ws2p/ws2p/src/services/mod.rs b/lib/modules/ws2p/ws2p/src/services/mod.rs
index cad9613b9cf716d80fcbb192145e4ef71e38470d..3e8dd8f24eb9f6d49eb5cba2dea5cee4d60f81bd 100644
--- a/lib/modules/ws2p/ws2p/src/services/mod.rs
+++ b/lib/modules/ws2p/ws2p/src/services/mod.rs
@@ -15,7 +15,7 @@
 
 //! WS2P Services
 
-use controllers::*;
+use crate::controllers::*;
 use duniter_network::documents::BlockchainDocument;
 use dup_crypto::keys::KeyPairEnum;
 use durs_network_documents::network_head::NetworkHead;
diff --git a/lib/modules/ws2p/ws2p/src/services/outgoing.rs b/lib/modules/ws2p/ws2p/src/services/outgoing.rs
index ed67115045d3c3194e3112f4f9fcca22eaa24c4e..88be87d4eebe7ab2667dd4f553520c6f961fefa5 100644
--- a/lib/modules/ws2p/ws2p/src/services/outgoing.rs
+++ b/lib/modules/ws2p/ws2p/src/services/outgoing.rs
@@ -15,12 +15,12 @@
 
 //! WS2P outgoing Services
 
+use crate::services::*;
+use crate::*;
 use dubp_documents::CurrencyName;
 use durs_network_documents::NodeFullId;
-use services::*;
 use std::collections::HashMap;
 use std::sync::mpsc;
-use *;
 
 #[derive(Debug, Clone)]
 /// Data allowing the service to manage an outgoing connection
diff --git a/lib/tools/crypto/Cargo.toml b/lib/tools/crypto/Cargo.toml
index 6347d17cb5f78b56617fc3330820e8b9601bc4b5..530dddd82e1342a7a9aeb11aba7e095a2bbc53fc 100644
--- a/lib/tools/crypto/Cargo.toml
+++ b/lib/tools/crypto/Cargo.toml
@@ -7,6 +7,7 @@ repository = "https://git.duniter.org/nodes/rust/duniter-rs"
 readme = "README.md"
 keywords = ["duniter", "keys", "cryptography"]
 license = "AGPL-3.0"
+edition = "2018"
 
 [lib]
 path = "src/lib.rs"
diff --git a/lib/tools/crypto/src/hashs/mod.rs b/lib/tools/crypto/src/hashs/mod.rs
index 8b2c580a100d7b1aee8a12fce2d5f7d1fbb8cf84..bb1906b8d4fcee09296b065ed3dc2f179b0d5f78 100644
--- a/lib/tools/crypto/src/hashs/mod.rs
+++ b/lib/tools/crypto/src/hashs/mod.rs
@@ -15,9 +15,9 @@
 
 //! Provide wrappers for cryptographic hashs
 
+use crate::keys::BaseConvertionError;
 use crypto::digest::Digest;
 use crypto::sha2::Sha256;
-use keys::BaseConvertionError;
 use rand::{thread_rng, Rng};
 use std::fmt::{Debug, Display, Error, Formatter};
 
diff --git a/lib/tools/crypto/src/keys/bin_signable.rs b/lib/tools/crypto/src/keys/bin_signable.rs
index 40d2055b10eea22b39adf8112f9fe614355b5c61..8cbd13d34e1985a73e6e68d0bd1f7ef3c9aaf244 100644
--- a/lib/tools/crypto/src/keys/bin_signable.rs
+++ b/lib/tools/crypto/src/keys/bin_signable.rs
@@ -16,8 +16,8 @@
 //! Generic code for signing data in binary format
 
 use super::*;
+use crate::hashs::Hash;
 use bincode;
-use hashs::Hash;
 use serde::{Deserialize, Serialize};
 
 /// Signatureable in binary format
diff --git a/lib/tools/crypto/src/keys/ed25519.rs b/lib/tools/crypto/src/keys/ed25519.rs
index cae348d9d3fa0e51c11db8ff85f7ded4c4b3329f..64137cdb040cda9f89723605c3f5a2b8f0b99a23 100644
--- a/lib/tools/crypto/src/keys/ed25519.rs
+++ b/lib/tools/crypto/src/keys/ed25519.rs
@@ -384,7 +384,7 @@ impl KeyPairFromSaltedPasswordGenerator {
 #[cfg(test)]
 mod tests {
     use super::*;
-    use keys::{KeyPair, Signature};
+    use crate::keys::{KeyPair, Signature};
 
     #[test]
     fn base58_private_key() {
diff --git a/lib/tools/documents/Cargo.toml b/lib/tools/documents/Cargo.toml
index 405cf08300de293bc9576ff2ad85a1ebfb8ed05f..95f2c1ddedc6cfac1515f875a60cba380841f2b6 100644
--- a/lib/tools/documents/Cargo.toml
+++ b/lib/tools/documents/Cargo.toml
@@ -7,6 +7,7 @@ repository = "https://git.duniter.org/nodes/rust/duniter-rs"
 readme = "README.md"
 keywords = ["duniter", "blockchain", "cryptocurrency", "document"]
 license = "AGPL-3.0"
+edition = "2018"
 
 [lib]
 path = "src/lib.rs"
diff --git a/lib/tools/documents/src/blockstamp.rs b/lib/tools/documents/src/blockstamp.rs
index a81d70af7bfbfd866fb3ebdc81ef9cf86fc65fd5..f800178eded54e0e9e6a42ae6a715701d92ad660 100644
--- a/lib/tools/documents/src/blockstamp.rs
+++ b/lib/tools/documents/src/blockstamp.rs
@@ -15,7 +15,7 @@
 
 //! Wrapper for blockstamp
 
-use *;
+use crate::*;
 
 /// Type of errors for [`BlockUId`] parsing.
 ///
diff --git a/lib/tools/documents/src/lib.rs b/lib/tools/documents/src/lib.rs
index dbb8d5f675e470ffe27947bc40e128e4147556ad..0a7e1a5a16f04343935df5c40abdab74bd0989d5 100644
--- a/lib/tools/documents/src/lib.rs
+++ b/lib/tools/documents/src/lib.rs
@@ -45,8 +45,8 @@ pub mod blockstamp;
 mod currencies_codes;
 pub mod v10;
 
+use crate::currencies_codes::*;
 use byteorder::{BigEndian, ReadBytesExt, WriteBytesExt};
-use currencies_codes::*;
 use dup_crypto::hashs::Hash;
 use dup_crypto::keys::*;
 use pest::iterators::Pair;
@@ -57,7 +57,7 @@ use std::fmt::{Debug, Display, Error, Formatter};
 use std::io::Cursor;
 use std::mem;
 
-pub use blockstamp::{Blockstamp, PreviousBlockstamp};
+pub use crate::blockstamp::{Blockstamp, PreviousBlockstamp};
 
 #[derive(Parser)]
 #[grammar = "documents_grammar.pest"]
diff --git a/lib/tools/documents/src/v10/block.rs b/lib/tools/documents/src/v10/block.rs
index 2a53d4ea79bcb3f7a22d4927d24af1fbbf81a32a..fcb30e620489131d69feb95500ed7e1cf241aabe 100644
--- a/lib/tools/documents/src/v10/block.rs
+++ b/lib/tools/documents/src/v10/block.rs
@@ -19,14 +19,14 @@ use dup_crypto::hashs::Hash;
 use dup_crypto::keys::*;
 use std::ops::Deref;
 
-use blockstamp::Blockstamp;
-use v10::certification::CertificationDocument;
-use v10::identity::IdentityDocument;
-use v10::membership::MembershipDocument;
-use v10::revocation::RevocationDocument;
-use v10::transaction::TransactionDocument;
-use v10::*;
-use *;
+use crate::blockstamp::Blockstamp;
+use crate::v10::certification::CertificationDocument;
+use crate::v10::identity::IdentityDocument;
+use crate::v10::membership::MembershipDocument;
+use crate::v10::revocation::RevocationDocument;
+use crate::v10::transaction::TransactionDocument;
+use crate::v10::*;
+use crate::*;
 
 #[derive(Debug, Clone)]
 /// Store error in block parameters parsing
@@ -505,7 +505,7 @@ mod tests {
     use super::certification::CertificationDocumentParser;
     use super::transaction::TransactionDocumentParser;
     use super::*;
-    use {Document, VerificationResult};
+    use crate::{Document, VerificationResult};
 
     #[test]
     fn generate_and_verify_empty_block() {
diff --git a/lib/tools/documents/src/v10/certification.rs b/lib/tools/documents/src/v10/certification.rs
index bb81effb764d2bf1b8ce4f4ee01331a08ee36aa0..de874e0abe27bfe86aa284c55d16d7ff450aee08 100644
--- a/lib/tools/documents/src/v10/certification.rs
+++ b/lib/tools/documents/src/v10/certification.rs
@@ -18,9 +18,9 @@
 use dup_crypto::keys::*;
 use pest::Parser;
 
-use blockstamp::Blockstamp;
-use v10::*;
-use *;
+use crate::blockstamp::Blockstamp;
+use crate::v10::*;
+use crate::*;
 
 #[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
 /// Wrap an Compact Revocation document (in block content)
@@ -331,8 +331,8 @@ impl TextDocumentParser<Rule> for CertificationDocumentParser {
 #[cfg(test)]
 mod tests {
     use super::*;
+    use crate::VerificationResult;
     use dup_crypto::keys::{PrivateKey, PublicKey, Signature};
-    use VerificationResult;
 
     #[test]
     fn generate_real_document() {
diff --git a/lib/tools/documents/src/v10/identity.rs b/lib/tools/documents/src/v10/identity.rs
index ff28eb7e93c5eafc6fac15bd15cdfd57f48fdb24..503e44f2329737a84706d668fd78e874c5fe46ce 100644
--- a/lib/tools/documents/src/v10/identity.rs
+++ b/lib/tools/documents/src/v10/identity.rs
@@ -17,9 +17,9 @@
 
 use pest::Parser;
 
-use v10::*;
-use Blockstamp;
-use *;
+use crate::v10::*;
+use crate::Blockstamp;
+use crate::*;
 
 /// Wrap an Identity document.
 ///
@@ -234,8 +234,8 @@ impl TextDocumentParser<Rule> for IdentityDocumentParser {
     fn parse(doc: &str) -> Result<Self::DocumentType, TextDocumentParseError> {
         match DocumentsParser::parse(Rule::idty, doc) {
             Ok(mut doc_pairs) => {
-                let mut idty_pair = doc_pairs.next().unwrap(); // get and unwrap the `idty` rule; never fails
-                let mut idty_vx_pair = idty_pair.into_inner().next().unwrap(); // get and unwrap the `idty_vx` rule; never fails
+                let idty_pair = doc_pairs.next().unwrap(); // get and unwrap the `idty` rule; never fails
+                let idty_vx_pair = idty_pair.into_inner().next().unwrap(); // get and unwrap the `idty_vx` rule; never fails
 
                 match idty_vx_pair.as_rule() {
                     Rule::idty_v10 => Ok(IdentityDocumentParser::from_pest_pair(idty_vx_pair)),
@@ -293,8 +293,8 @@ impl TextDocumentParser<Rule> for IdentityDocumentParser {
 #[cfg(test)]
 mod tests {
     use super::*;
+    use crate::{Document, VerificationResult};
     use dup_crypto::keys::{PrivateKey, PublicKey, Signature};
-    use {Document, VerificationResult};
 
     #[test]
     fn generate_real_document() {
diff --git a/lib/tools/documents/src/v10/membership.rs b/lib/tools/documents/src/v10/membership.rs
index 1c44b0cd1a1443033bda2f7bb1f6c63349c0b445..47c4f01799f809d8e12d94e613dacc688722f820 100644
--- a/lib/tools/documents/src/v10/membership.rs
+++ b/lib/tools/documents/src/v10/membership.rs
@@ -18,9 +18,9 @@
 use dup_crypto::keys::*;
 use pest::Parser;
 
-use blockstamp::Blockstamp;
-use v10::*;
-use *;
+use crate::blockstamp::Blockstamp;
+use crate::v10::*;
+use crate::*;
 
 /// Type of a Membership.
 #[derive(Debug, Deserialize, Clone, Copy, Hash, Serialize, PartialEq, Eq)]
@@ -358,8 +358,8 @@ impl TextDocumentParser<Rule> for MembershipDocumentParser {
 #[cfg(test)]
 mod tests {
     use super::*;
+    use crate::VerificationResult;
     use dup_crypto::keys::{PrivateKey, PublicKey, Signature};
-    use VerificationResult;
 
     #[test]
     fn generate_real_document() {
diff --git a/lib/tools/documents/src/v10/mod.rs b/lib/tools/documents/src/v10/mod.rs
index bc61eaa274898f379769096da3be869cf0c31986..bf96fd99820f994b472852dea8d5f289c048b674 100644
--- a/lib/tools/documents/src/v10/mod.rs
+++ b/lib/tools/documents/src/v10/mod.rs
@@ -25,14 +25,14 @@ pub mod transaction;
 use dup_crypto::keys::PrivateKey;
 use pest::Parser;
 
-pub use v10::block::BlockDocument;
-use v10::certification::*;
-use v10::identity::*;
-use v10::membership::*;
-use v10::revocation::*;
-use v10::transaction::*;
-use ToStringObject;
-use *;
+pub use crate::v10::block::BlockDocument;
+use crate::v10::certification::*;
+use crate::v10::identity::*;
+use crate::v10::membership::*;
+use crate::v10::revocation::*;
+use crate::v10::transaction::*;
+use crate::ToStringObject;
+use crate::*;
 
 #[derive(Clone, Debug, Deserialize, Serialize)]
 /// Contains a document in full or compact format
diff --git a/lib/tools/documents/src/v10/revocation.rs b/lib/tools/documents/src/v10/revocation.rs
index c070a49c424d4c3321feb738343a231da2542b94..cd98ea229a7a201aff608c9b628c408d60a5fdbc 100644
--- a/lib/tools/documents/src/v10/revocation.rs
+++ b/lib/tools/documents/src/v10/revocation.rs
@@ -18,9 +18,9 @@
 use dup_crypto::keys::*;
 use pest::Parser;
 
-use blockstamp::Blockstamp;
-use v10::*;
-use *;
+use crate::blockstamp::Blockstamp;
+use crate::v10::*;
+use crate::*;
 
 #[derive(Debug, Copy, Clone, Deserialize, Serialize, PartialEq, Eq)]
 /// Wrap an Compact Revocation document (in block content)
@@ -291,8 +291,8 @@ impl TextDocumentParser<Rule> for RevocationDocumentParser {
 #[cfg(test)]
 mod tests {
     use super::*;
+    use crate::VerificationResult;
     use dup_crypto::keys::{PrivateKey, PublicKey, Signature};
-    use VerificationResult;
 
     #[test]
     fn generate_real_document() {
diff --git a/lib/tools/documents/src/v10/transaction.rs b/lib/tools/documents/src/v10/transaction.rs
index fe61bca114fc66c542507d6fd0ce57a21ead75ef..d56f57934f7a96b9e00a8f904ee367415ec397fe 100644
--- a/lib/tools/documents/src/v10/transaction.rs
+++ b/lib/tools/documents/src/v10/transaction.rs
@@ -22,9 +22,9 @@ use pest::Parser;
 use std::ops::{Add, Deref, Sub};
 use std::str::FromStr;
 
-use blockstamp::Blockstamp;
-use v10::*;
-use *;
+use crate::blockstamp::Blockstamp;
+use crate::v10::*;
+use crate::*;
 
 /// Wrap a transaction amount
 #[derive(Debug, Copy, Clone, Eq, Ord, PartialEq, PartialOrd, Deserialize, Hash, Serialize)]
@@ -352,7 +352,7 @@ impl UTXOConditionsGroup {
     pub fn wrap_utxo_conds(pair: Pair<Rule>) -> UTXOConditionsGroup {
         match pair.as_rule() {
             Rule::output_and_group => {
-                let mut and_pairs = pair.into_inner();
+                let and_pairs = pair.into_inner();
                 let mut conds_subgroups: Vec<UTXOConditionsGroup> = and_pairs
                     .map(UTXOConditionsGroup::wrap_utxo_conds)
                     .collect();
@@ -361,7 +361,7 @@ impl UTXOConditionsGroup {
                 )))
             }
             Rule::output_or_group => {
-                let mut or_pairs = pair.into_inner();
+                let or_pairs = pair.into_inner();
                 let mut conds_subgroups: Vec<UTXOConditionsGroup> =
                     or_pairs.map(UTXOConditionsGroup::wrap_utxo_conds).collect();
                 UTXOConditionsGroup::Brackets(Box::new(UTXOConditionsGroup::new_or_chain(
@@ -903,7 +903,7 @@ impl TextDocumentParser<Rule> for TransactionDocumentParser {
 #[cfg(test)]
 mod tests {
     use super::*;
-    use {Document, VerificationResult};
+    use crate::{Document, VerificationResult};
 
     #[test]
     fn generate_real_document() {
diff --git a/lib/tools/network-documents/Cargo.toml b/lib/tools/network-documents/Cargo.toml
index 9149de41c496be9ebb3f78f67ae5b93356c2d00d..280664eb5b15f6f50b8e48d11aebd18af6cf5a24 100644
--- a/lib/tools/network-documents/Cargo.toml
+++ b/lib/tools/network-documents/Cargo.toml
@@ -4,6 +4,7 @@ version = "0.3.0"
 authors = ["librelois <elois@duniter.org>"]
 description = "Network documents for DUNP (DUniter Network Protocol)"
 license = "AGPL-3.0"
+edition = "2018"
 
 [lib]
 path = "src/lib.rs"
diff --git a/lib/tools/network-documents/src/lib.rs b/lib/tools/network-documents/src/lib.rs
index d9a0440114da23ebaac187aa80a5e2baed8d2e44..397cfe231678e1a281dec02d23351ae9993b4de3 100644
--- a/lib/tools/network-documents/src/lib.rs
+++ b/lib/tools/network-documents/src/lib.rs
@@ -47,13 +47,13 @@ pub mod network_head_v2;
 pub mod network_head_v3;
 pub mod network_peer;
 
+use crate::network_head::NetworkHead;
+use crate::network_head_v3::NetworkHeadV3;
+use crate::network_peer::PeerCard;
+use crate::network_peer::PeerCardV11;
 use dubp_documents::{TextDocumentParseError, TextDocumentParser};
 use dup_crypto::hashs::*;
 use dup_crypto::keys::*;
-use network_head::NetworkHead;
-use network_head_v3::NetworkHeadV3;
-use network_peer::PeerCard;
-use network_peer::PeerCardV11;
 use pest::iterators::Pair;
 use pest::Parser;
 use std::fmt::{Display, Error, Formatter};
diff --git a/lib/tools/network-documents/src/network_endpoint.rs b/lib/tools/network-documents/src/network_endpoint.rs
index 155badfa97d65dba95024c01296e09e489321f85..4c76f5ba1dfaf9e0125043738d94b074b63fcced 100644
--- a/lib/tools/network-documents/src/network_endpoint.rs
+++ b/lib/tools/network-documents/src/network_endpoint.rs
@@ -19,6 +19,7 @@ extern crate dubp_documents;
 extern crate dup_crypto;
 extern crate serde;
 
+use crate::*;
 use dup_crypto::hashs::Hash;
 use dup_crypto::keys::PubKey;
 use hex;
@@ -26,7 +27,6 @@ use pest::iterators::Pair;
 use pest::Parser;
 use std::net::{Ipv4Addr, Ipv6Addr};
 use std::str::FromStr;
-use *;
 
 /// Total size of all fixed size fields of an EndpointV2
 pub static ENDPOINTV2_FIXED_SIZE: &'static usize = &9;
@@ -513,7 +513,7 @@ impl EndpointEnum {
 #[cfg(test)]
 mod tests {
     use super::*;
-    use tests::bincode::{deserialize, serialize};
+    use crate::tests::bincode::{deserialize, serialize};
 
     #[test]
     fn test_network_features() {
diff --git a/lib/tools/network-documents/src/network_head.rs b/lib/tools/network-documents/src/network_head.rs
index 78efe08c006c6c37e8553d465b565fd57a2a03bd..6a26fda9f6566a1e36882de3e8a99eade1070443 100644
--- a/lib/tools/network-documents/src/network_head.rs
+++ b/lib/tools/network-documents/src/network_head.rs
@@ -15,16 +15,16 @@
 
 //! Module defining the format of network heads and how to handle them.
 
+use crate::network_head_v2::*;
+use crate::network_head_v3::*;
+use crate::{NodeFullId, NodeId};
 use dubp_documents::blockstamp::*;
 use dup_crypto::keys::*;
-use network_head_v2::*;
-use network_head_v3::*;
 use serde_json;
 use std::collections::HashMap;
 use std::num::ParseIntError;
 use std::ops::Deref;
 use std::str::FromStr;
-use {NodeFullId, NodeId};
 
 #[derive(Debug, Clone, Eq, Ord, PartialOrd, PartialEq, Serialize, Deserialize)]
 /// Network Head : Set of information on the current state of a node, the central information being the blockstamp of its current block (= the head of its blockchain).
diff --git a/lib/tools/network-documents/src/network_head_v2.rs b/lib/tools/network-documents/src/network_head_v2.rs
index 5b9c72c826c39fa4886178b4ef4e0600281fa416..662d116b3f927f54e172e20bd0ffd6100b6c2492 100644
--- a/lib/tools/network-documents/src/network_head_v2.rs
+++ b/lib/tools/network-documents/src/network_head_v2.rs
@@ -15,13 +15,13 @@
 
 //! Module defining the format of network heads v2 and how to handle them.
 
+use crate::NodeId;
 use dubp_documents::blockstamp::*;
 use dup_crypto::keys::*;
 use std::cmp::Ordering;
 use std::num::ParseIntError;
 use std::ops::Deref;
 use std::str::FromStr;
-use NodeId;
 
 #[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
 /// Head Message V2
diff --git a/lib/tools/network-documents/src/network_head_v3.rs b/lib/tools/network-documents/src/network_head_v3.rs
index bb8be85b4a9435a4b3c523b249b358f34164b4cc..53b2e2b08ec9239dc64df770f70b685653a02414 100644
--- a/lib/tools/network-documents/src/network_head_v3.rs
+++ b/lib/tools/network-documents/src/network_head_v3.rs
@@ -15,6 +15,7 @@
 
 //! Module defining the format of network heads v3 and how to handle them.
 
+use crate::*;
 use base58::ToBase58;
 use dubp_documents::blockstamp::Blockstamp;
 use dubp_documents::{BlockHash, BlockId, CurrencyName, ToStringObject};
@@ -23,7 +24,6 @@ use dup_crypto::keys::*;
 use pest::iterators::Pair;
 use pest::Parser;
 use std::cmp::Ordering;
-use *;
 
 #[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
 /// Head V3
@@ -215,7 +215,7 @@ impl<'a> ToStringObject for NetworkHeadV3 {
 #[cfg(test)]
 mod tests {
     use super::*;
-    use tests::keypair1;
+    use crate::tests::keypair1;
 
     #[test]
     fn head_v3_sign_and_verify() {
diff --git a/lib/tools/network-documents/src/network_peer.rs b/lib/tools/network-documents/src/network_peer.rs
index c4b93afa8f918ebe59a44126e8b15777e34ba181..63ee3f38d508837f0d2f99da1ca1051bf9c30a03 100644
--- a/lib/tools/network-documents/src/network_peer.rs
+++ b/lib/tools/network-documents/src/network_peer.rs
@@ -19,16 +19,16 @@ extern crate dubp_documents;
 extern crate dup_crypto;
 extern crate serde;
 
+use crate::network_endpoint::*;
+use crate::*;
 use base58::ToBase58;
 use dubp_documents::ToStringObject;
 use dubp_documents::{blockstamp::Blockstamp, CurrencyName};
 use dubp_documents::{BlockHash, BlockId};
 use dup_crypto::keys::text_signable::TextSignable;
 use dup_crypto::keys::*;
-use network_endpoint::*;
 use pest::iterators::Pair;
 use pest::Parser;
-use *;
 
 #[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
 /// Peer card V10
@@ -272,9 +272,9 @@ impl PeerCard {
 #[cfg(test)]
 mod tests {
     use super::*;
+    use crate::tests::keypair1;
     use std::net::Ipv4Addr;
     use std::str::FromStr;
-    use tests::keypair1;
 
     fn create_endpoint_v2() -> EndpointV2 {
         EndpointV2 {
diff --git a/lib/tools/wot/Cargo.toml b/lib/tools/wot/Cargo.toml
index e30866df592e3aec94edd5ead2d4732d3f1aed27..ce1992f502cc0d10bcd5a0446401046f4b2978db 100644
--- a/lib/tools/wot/Cargo.toml
+++ b/lib/tools/wot/Cargo.toml
@@ -7,6 +7,7 @@ repository = "https://git.duniter.org/nodes/rust/duniter-rs"
 readme = "README.md"
 keywords = ["duniter", "wot", "wot", "web", "trust"]
 license = "AGPL-3.0"
+edition = "2018"
 
 [lib]
 path = "lib.rs"
diff --git a/lib/tools/wot/data/rusty.rs b/lib/tools/wot/data/rusty.rs
index 330902254357d389a0aaf07a99824efd85efa03c..b3bbae06a62162be50e3a3bf86598302ca4caf38 100644
--- a/lib/tools/wot/data/rusty.rs
+++ b/lib/tools/wot/data/rusty.rs
@@ -16,10 +16,10 @@
 //! Experimental implementation of the Web of Trust in a more "rusty" style.
 
 use super::{HasLinkResult, NewLinkResult, RemLinkResult};
+use crate::NodeId;
+use crate::WebOfTrust;
 use rayon::prelude::*;
 use std::collections::HashSet;
-use NodeId;
-use WebOfTrust;
 
 /// A node in the `WoT` graph.
 #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
@@ -219,7 +219,7 @@ impl WebOfTrust for RustyWebOfTrust {
 #[cfg(test)]
 mod tests {
     use super::*;
-    use tests::generic_wot_test;
+    use crate::tests::generic_wot_test;
 
     #[test]
     fn wot_tests() {
diff --git a/lib/tools/wot/lib.rs b/lib/tools/wot/lib.rs
index 669613ce785242857e88441d54459f737e314bff..cd53b1f36dcb644d843abc1577a0fdb7d89598d3 100644
--- a/lib/tools/wot/lib.rs
+++ b/lib/tools/wot/lib.rs
@@ -49,16 +49,16 @@ extern crate serde_derive;
 pub mod data;
 pub mod operations;
 
-pub use data::{NodeId, WebOfTrust};
+pub use crate::data::{NodeId, WebOfTrust};
 
 #[cfg(test)]
 mod tests {
     use super::*;
-    use data::*;
-    use operations::centrality::*;
-    use operations::distance::*;
-    use operations::file::*;
-    use operations::path::*;
+    use crate::data::*;
+    use crate::operations::centrality::*;
+    use crate::operations::distance::*;
+    use crate::operations::file::*;
+    use crate::operations::path::*;
 
     /// Test translated from https://github.com/duniter/wot/blob/master/tests/test.js
     ///
diff --git a/lib/tools/wot/operations/centrality.rs b/lib/tools/wot/operations/centrality.rs
index c4470a82052334f5ed7c6dcdc0b1468c8e11e984..c87b5f77014eca2becfaacf36e5d5159db2a7b67 100644
--- a/lib/tools/wot/operations/centrality.rs
+++ b/lib/tools/wot/operations/centrality.rs
@@ -15,8 +15,8 @@
 
 //! Provide a trait and implementations to find paths between nodes.
 
-use data::NodeId;
-use data::WebOfTrust;
+use crate::data::NodeId;
+use crate::data::WebOfTrust;
 use std::collections::{HashMap, VecDeque};
 
 /// Find paths between 2 nodes of a `WebOfTrust`.
diff --git a/lib/tools/wot/operations/distance.rs b/lib/tools/wot/operations/distance.rs
index 46949ad205c0760554d1ee0f4267bd44196f2c0b..d7e15768f21cf8a8e57486832d87432cf9f7a57b 100644
--- a/lib/tools/wot/operations/distance.rs
+++ b/lib/tools/wot/operations/distance.rs
@@ -15,8 +15,8 @@
 
 //! Provide a trait and implementations to compute distances.
 
-use data::NodeId;
-use data::WebOfTrust;
+use crate::data::NodeId;
+use crate::data::WebOfTrust;
 use rayon::prelude::*;
 use std::collections::HashSet;
 
diff --git a/lib/tools/wot/operations/file.rs b/lib/tools/wot/operations/file.rs
index 785cf784181cbd530679e0aa84fcb4df6d84a8ec..6561c1288293f59a79baf88e58cd6e1411cc4b5f 100644
--- a/lib/tools/wot/operations/file.rs
+++ b/lib/tools/wot/operations/file.rs
@@ -15,7 +15,7 @@
 
 //! Provide a trait and implementation to read and write `WebOfTrust` to disk.
 
-use data::NodeId;
+use crate::data::NodeId;
 use std::fs;
 use std::fs::File;
 use std::io;
@@ -23,7 +23,7 @@ use std::io::prelude::*;
 
 use byteorder::{BigEndian, ReadBytesExt, WriteBytesExt};
 
-use data::WebOfTrust;
+use crate::data::WebOfTrust;
 
 /// Results of `WebOfTrust` parsing from binary file.
 #[derive(Debug)]
diff --git a/lib/tools/wot/operations/path.rs b/lib/tools/wot/operations/path.rs
index 5e3d24252875aedbbdba888ac98504487c601d61..231af6889406116e17aac6ff5c1c8dae9bf2e918 100644
--- a/lib/tools/wot/operations/path.rs
+++ b/lib/tools/wot/operations/path.rs
@@ -15,8 +15,8 @@
 
 //! Provide a trait and implementations to find paths between nodes.
 
-use data::NodeId;
-use data::WebOfTrust;
+use crate::data::NodeId;
+use crate::data::WebOfTrust;
 use std::collections::HashSet;
 
 /// Find paths between 2 nodes of a `WebOfTrust`.