diff --git a/src/rust/amadeus-rs/amadeus/src/utils/deamon.rs b/src/rust/amadeus-rs/amadeus/src/utils/deamon.rs
index 1cf061e2ded944e8a290086d8217e39bc3ddbdfa..fa774c687f29d1cc6486d654e40b3c492fdca883 100644
--- a/src/rust/amadeus-rs/amadeus/src/utils/deamon.rs
+++ b/src/rust/amadeus-rs/amadeus/src/utils/deamon.rs
@@ -107,18 +107,23 @@ impl Deamon for CommandDeamon {
             return_when_flagged!(quit_deamon, joined_deamon);
             match commands_recv.recv() {
                 Ok(command) => {
-                    let maybe_res = connexion.send_query(command);
-                    if maybe_res.is_err() {
-                        error!("Failed to send query to lektor: {}", maybe_res.unwrap_err());
-                        continue;
-                    }
-                    let res = maybe_res.unwrap();
-                    let response = lkt_lib::response::LektorFormatedResponse::from(res);
-                    if let Err(e) = responses_send.send(response) {
-                        error!("Failed to send response to amadeus: {e}")
+                    let res = match connexion.send_query(command) {
+                        Ok(ok) => ok,
+                        Err(e) => {
+                            error!("failed to send query to lektor: {e}");
+                            continue;
+                        }
+                    };
+                    match lkt_lib::response::LektorFormatedResponse::try_from(res) {
+                        Ok(response) => {
+                            if let Err(e) = responses_send.send(response) {
+                                error!("failed to send response to amadeus: {e}")
+                            }
+                        }
+                        Err(e) => error!("failed to format the response: {e}"),
                     }
                 }
-                Err(e) => error!("Failed to get command from amadeus: {e}"),
+                Err(e) => error!("failed to get command from amadeus: {e}"),
             };
         });
 
@@ -153,31 +158,36 @@ impl Deamon for StatusDeamon {
             return_when_flagged!(quit_deamon, joined_deamon);
 
             let status = {
-                let maybe_res = connexion.send_query(lkt_lib::query::LektorQuery::PlaybackStatus);
-                if maybe_res.is_err() {
-                    error!(
-                        "Failed to send the playback status command to lektor: {}",
-                        maybe_res.unwrap_err()
-                    );
-                    continue;
+                let res = match connexion.send_query(lkt_lib::query::LektorQuery::PlaybackStatus) {
+                    Ok(res) => res,
+                    Err(e) => {
+                        error!("failed to send the playback status command to lektor: {e}");
+                        continue;
+                    }
+                };
+                match lkt_lib::response::LektorFormatedResponse::try_from(res) {
+                    Err(e) => panic!("{e}"),
+                    Ok(mut response) => lkt_lib::response::PlaybackStatus::consume(&mut response),
                 }
-                let res = maybe_res.unwrap();
-                let mut response = lkt_lib::response::LektorFormatedResponse::from(res);
-                lkt_lib::response::PlaybackStatus::consume(&mut response)
             };
 
             let current = if status.state != lkt_lib::types::LektorState::Stopped {
-                let maybe_res = connexion.send_query(lkt_lib::query::LektorQuery::CurrentKara);
-                if maybe_res.is_err() {
-                    error!(
-                        "Failed to send the current kara command to lektor: {}",
-                        maybe_res.unwrap_err()
-                    );
-                    continue;
+                let res = match connexion.send_query(lkt_lib::query::LektorQuery::CurrentKara) {
+                    Ok(res) => res,
+                    Err(e) => {
+                        error!("failed to send the current kara command to lektor: {e}",);
+                        continue;
+                    }
+                };
+                match lkt_lib::response::LektorFormatedResponse::try_from(res) {
+                    Ok(mut response) => {
+                        Some(lkt_lib::response::CurrentKara::consume(&mut response))
+                    }
+                    Err(e) => {
+                        error!("failed to format response from lektor: {e}");
+                        None
+                    }
                 }
-                let res = maybe_res.unwrap();
-                let mut response = lkt_lib::response::LektorFormatedResponse::from(res);
-                Some(lkt_lib::response::CurrentKara::consume(&mut response))
             } else {
                 None
             };
diff --git a/src/rust/amadeus-rs/lkt-lib/src/connexion.rs b/src/rust/amadeus-rs/lkt-lib/src/connexion.rs
index 70a3bcf0185c4202d0da22be928f56da6a5db3fd..552a992a11354630ab9ead404fa068bae15e1dc4 100644
--- a/src/rust/amadeus-rs/lkt-lib/src/connexion.rs
+++ b/src/rust/amadeus-rs/lkt-lib/src/connexion.rs
@@ -1,3 +1,6 @@
+//! Create a connexion to a lektord instande then send commands and recieve data
+//! from the server.
+
 use crate::{constants, query::LektorQuery, query::LektorQueryLineType};
 use log::error;
 use std::{
diff --git a/src/rust/amadeus-rs/lkt-lib/src/constants.rs b/src/rust/amadeus-rs/lkt-lib/src/constants.rs
index 960c2792931d7c33d317828f06ba51caf8a19f1e..505f0af8e8e8bc5773341ca8fc6496988cb76508 100644
--- a/src/rust/amadeus-rs/lkt-lib/src/constants.rs
+++ b/src/rust/amadeus-rs/lkt-lib/src/constants.rs
@@ -1,3 +1,6 @@
+//! Contains standard constants from lektord, must be updated manually if they
+//! change in lektord...
+
 #![allow(dead_code)]
 
 /// MPD commands are at most 32 character long.
diff --git a/src/rust/amadeus-rs/lkt-lib/src/lib.rs b/src/rust/amadeus-rs/lkt-lib/src/lib.rs
index 3975593c3a2061f61079af11887bd6ec93b3ae97..100741fd15ee9fe6bfbd86c0afbd6caec75f61a3 100644
--- a/src/rust/amadeus-rs/lkt-lib/src/lib.rs
+++ b/src/rust/amadeus-rs/lkt-lib/src/lib.rs
@@ -1,3 +1,6 @@
+//! Contains structurs and mechanisms to build, send and recieve commands
+//! to/from lektord.
+
 pub mod connexion;
 mod constants;
 pub mod query;
diff --git a/src/rust/amadeus-rs/lkt-lib/src/query.rs b/src/rust/amadeus-rs/lkt-lib/src/query.rs
index aba241678e08c104f2f73444983937473ba4a08c..886f19df22e519c2efacf99b181eb1509bfd9fbb 100644
--- a/src/rust/amadeus-rs/lkt-lib/src/query.rs
+++ b/src/rust/amadeus-rs/lkt-lib/src/query.rs
@@ -1,3 +1,5 @@
+//! Contains files to create and build queries to send latter to lektord.
+
 use crate::uri::LektorUri;
 use amadeus_macro::lkt_command_from_str;
 use std::string::ToString;
@@ -78,27 +80,28 @@ impl LektorQuery {
 
 impl ToString for LektorQuery {
     fn to_string(&self) -> String {
+        use LektorQuery::*;
         match self {
-            Self::Ping => lkt_command_from_str!("ping"),
-            Self::Close => lkt_command_from_str!("close"),
-            Self::KillServer => lkt_command_from_str!("kill"),
-            Self::ConnectAsUser(password) => format!("password {}\n", password),
+            Ping => lkt_command_from_str!("ping"),
+            Close => lkt_command_from_str!("close"),
+            KillServer => lkt_command_from_str!("kill"),
+            ConnectAsUser(password) => format!("password {}\n", password),
 
-            Self::CurrentKara => lkt_command_from_str!("currentsong"),
-            Self::PlaybackStatus => lkt_command_from_str!("status"),
+            CurrentKara => lkt_command_from_str!("currentsong"),
+            PlaybackStatus => lkt_command_from_str!("status"),
 
-            Self::PlayNext => lkt_command_from_str!("next"),
-            Self::PlayPrevious => lkt_command_from_str!("previous"),
-            Self::ShuffleQueue => lkt_command_from_str!("shuffle"),
+            PlayNext => lkt_command_from_str!("next"),
+            PlayPrevious => lkt_command_from_str!("previous"),
+            ShuffleQueue => lkt_command_from_str!("shuffle"),
 
-            Self::ListAllPlaylists => lkt_command_from_str!("listplaylists"),
-            Self::ListPlaylist(plt_name) => format!("listplaylist {}\n", plt_name),
+            ListAllPlaylists => lkt_command_from_str!("listplaylists"),
+            ListPlaylist(plt_name) => format!("listplaylist {}\n", plt_name),
 
-            Self::FindAddKara(uri) => format!("findadd {}\n", uri.to_string()),
-            Self::InsertKara(uri) => format!("__insert {}\n", uri.to_string()),
-            Self::AddKara(uri) => format!("add {}\n", uri.to_string()),
+            FindAddKara(uri) => format!("findadd {}\n", uri.to_string()),
+            InsertKara(uri) => format!("__insert {}\n", uri.to_string()),
+            AddKara(uri) => format!("add {}\n", uri.to_string()),
 
-            Self::Continuation(cont, query) => format!("{} {}", cont, query.to_owned().to_string()),
+            Continuation(cont, query) => format!("{} {}", cont, query.to_owned().to_string()),
         }
     }
 }
diff --git a/src/rust/amadeus-rs/lkt-lib/src/response.rs b/src/rust/amadeus-rs/lkt-lib/src/response.rs
index 24333136643937dc576f67c27cb2fcac7ba55db7..bbedf6d4d80c5e652919fcffd27b3a665f5a32a5 100644
--- a/src/rust/amadeus-rs/lkt-lib/src/response.rs
+++ b/src/rust/amadeus-rs/lkt-lib/src/response.rs
@@ -1,3 +1,5 @@
+//! Contains types for typed response.
+
 use crate::types::LektorState;
 use std::collections::HashMap;
 
@@ -15,21 +17,21 @@ impl LektorFormatedResponse {
     }
 }
 
-impl From<Vec<String>> for LektorFormatedResponse {
-    fn from(vec: Vec<String>) -> Self {
-        Self {
-            content: vec
-                .into_iter()
-                .map(|line| {
-                    let key_pair: Vec<&str> = line.splitn(2, ':').collect();
-                    if let [key, value] = key_pair[..] {
-                        (key.trim().to_lowercase(), value.trim().to_owned())
-                    } else {
-                        panic!("Invalid line for formated response: {}", line);
-                    }
-                })
-                .collect(),
+impl TryFrom<Vec<String>> for LektorFormatedResponse {
+    type Error = String;
+
+    fn try_from(vec: Vec<String>) -> Result<Self, Self::Error> {
+        let mut content = HashMap::with_capacity(vec.len());
+        for line in vec {
+            let key_pair: Vec<&str> = line.splitn(2, ':').collect();
+            match key_pair[..] {
+                [key, value] => {
+                    content.insert(key.trim().to_lowercase(), value.trim().to_string());
+                }
+                _ => return Err(format!("Invalid line for formated response: {}", line)),
+            }
         }
+        Ok(Self { content })
     }
 }
 
diff --git a/src/rust/amadeus-rs/lkt-lib/src/types.rs b/src/rust/amadeus-rs/lkt-lib/src/types.rs
index fa3faaff91f5cbad22c1cd8d0a5a38fed70c46f7..421fbd7d01a0cd134dce21b598b5a8816dabbb91 100644
--- a/src/rust/amadeus-rs/lkt-lib/src/types.rs
+++ b/src/rust/amadeus-rs/lkt-lib/src/types.rs
@@ -1,3 +1,5 @@
+//! Common types for lektord.
+
 use std::hash::{Hash, Hasher};
 
 /// Lektor Types are the Kara and the Playlist types. You should not implement
diff --git a/src/rust/amadeus-rs/lkt-lib/src/uri.rs b/src/rust/amadeus-rs/lkt-lib/src/uri.rs
index 95892a1c798782fc79ac630f072a01b70c279a39..7c1e8308540a95ae32976828bfb6483a9e664e1f 100644
--- a/src/rust/amadeus-rs/lkt-lib/src/uri.rs
+++ b/src/rust/amadeus-rs/lkt-lib/src/uri.rs
@@ -1,3 +1,5 @@
+//! Build lektord queries.
+
 #[derive(Debug, Clone)]
 pub enum LektorUri {
     Id(i32),
diff --git a/src/rust/amadeus-rs/lkt-rs/src/main.rs b/src/rust/amadeus-rs/lkt-rs/src/main.rs
index fc6376caa82dc2b0bede805e5699af5241efafce..3e939515c9c3895870dc084e8bfa37b030ad6be9 100644
--- a/src/rust/amadeus-rs/lkt-rs/src/main.rs
+++ b/src/rust/amadeus-rs/lkt-rs/src/main.rs
@@ -5,13 +5,13 @@ fn main() {
     if lektor.send_query(LektorQuery::Ping).is_ok() {}
 
     if let Ok(res) = lektor.send_query(LektorQuery::CurrentKara) {
-        let mut response = response::LektorFormatedResponse::from(res);
+        let mut response = response::LektorFormatedResponse::try_from(res).unwrap();
         let current_kara = response::CurrentKara::consume(&mut response);
         println!("CURRENT {:?}", current_kara);
     }
 
     if let Ok(res) = lektor.send_query(LektorQuery::PlaybackStatus) {
-        let mut response = response::LektorFormatedResponse::from(res);
+        let mut response = response::LektorFormatedResponse::try_from(res).unwrap();
         let playback_status = response::PlaybackStatus::consume(&mut response);
         println!("PLAYBACK-STATUS {:?}", playback_status);
     }