diff --git a/Cargo.lock b/Cargo.lock
index 9e01baa7d39c4fae1d0c3668e897d1bd23a56296..b4c3abfe1efae86b3aa1be1060c1fed7c54b129e 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -50,7 +50,7 @@ dependencies = [
 
 [[package]]
 name = "duniter-protocol"
-version = "0.1.0"
+version = "0.2.0"
 dependencies = [
  "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "base64 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
diff --git a/protocol/Cargo.toml b/protocol/Cargo.toml
index 8faccd1cde85fd5174e5f82610637db99d9e8cb2..09c94e70e3c00abc4f8c85bd1c5b8a0832672b39 100644
--- a/protocol/Cargo.toml
+++ b/protocol/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "duniter-protocol"
-version = "0.1.0"
+version = "0.2.0"
 authors = ["nanocryk <nanocryk@duniter.org>"]
 description = "Implements the Duniter Protocol"
 repository = "https://git.duniter.org/nodes/rust/duniter-rs"
diff --git a/protocol/blockchain/mod.rs b/protocol/blockchain/mod.rs
index ba814282a2c29256f431b2c0104543ca674c2d3e..ae0624f12298c7b6d8a878666142022a00fc990c 100644
--- a/protocol/blockchain/mod.rs
+++ b/protocol/blockchain/mod.rs
@@ -119,12 +119,12 @@ pub trait DocumentBuilder {
 
     /// Build a document with provided signatures.
     fn build_with_signature(
-        self,
+        &self,
         signatures: Vec<<<Self::Document as Document>::PublicKey as PublicKey>::Signature>,
     ) -> Self::Document;
 
     /// Build a document and sign it with the private key.
-    fn build_and_sign(self, private_keys: Vec<Self::PrivateKey>) -> Self::Document;
+    fn build_and_sign(&self, private_keys: Vec<Self::PrivateKey>) -> Self::Document;
 }
 
 /// Trait for a document parser from a `S` source
diff --git a/protocol/blockchain/v10/documents/identity.rs b/protocol/blockchain/v10/documents/identity.rs
index 8b733759c4fd902a90f75b21b238faa000c0b236..847a65767fb39de241455f419e146ca32c7eba95 100644
--- a/protocol/blockchain/v10/documents/identity.rs
+++ b/protocol/blockchain/v10/documents/identity.rs
@@ -123,11 +123,11 @@ impl<'a> DocumentBuilder for IdentityDocumentBuilder<'a> {
     type Document = IdentityDocument;
     type PrivateKey = ed25519::PrivateKey;
 
-    fn build_with_signature(self, signatures: Vec<ed25519::Signature>) -> IdentityDocument {
+    fn build_with_signature(&self, signatures: Vec<ed25519::Signature>) -> IdentityDocument {
         self.build_with_text_and_sigs(self.generate_text(), signatures)
     }
 
-    fn build_and_sign(self, private_keys: Vec<ed25519::PrivateKey>) -> IdentityDocument {
+    fn build_and_sign(&self, private_keys: Vec<ed25519::PrivateKey>) -> IdentityDocument {
         let (text, signatures) = self.build_signed_text(private_keys);
         self.build_with_text_and_sigs(text, signatures)
     }
@@ -214,27 +214,21 @@ mod tests {
             "0-E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855",
         ).unwrap();
 
-        {
-            let doc = IdentityDocumentBuilder {
-                currency: "duniter_unit_test_currency",
-                unique_id: "tic",
-                blockstamp: &block,
-                issuer: &pubkey,
-            }.build_with_signature(vec![sig]);
-
-            assert_eq!(doc.verify_signatures(), VerificationResult::Valid());
-        }
-
-        {
-            let doc = IdentityDocumentBuilder {
-                currency: "duniter_unit_test_currency",
-                unique_id: "tic",
-                blockstamp: &block,
-                issuer: &pubkey,
-            }.build_and_sign(vec![prikey]);
-
-            assert_eq!(doc.verify_signatures(), VerificationResult::Valid());
-        }
+        let builder = IdentityDocumentBuilder {
+            currency: "duniter_unit_test_currency",
+            unique_id: "tic",
+            blockstamp: &block,
+            issuer: &pubkey,
+        };
+
+        assert_eq!(
+            builder.build_with_signature(vec![sig]).verify_signatures(),
+            VerificationResult::Valid()
+        );
+        assert_eq!(
+            builder.build_and_sign(vec![prikey]).verify_signatures(),
+            VerificationResult::Valid()
+        );
     }
 
     #[test]