diff --git a/src/rust/amadeus-rs/amadeus/Cargo.toml b/src/rust/amadeus-rs/amadeus/Cargo.toml
index cdea7bab694b64ad3539838cf85cf70e0b2e1eef..433ad7596a78a5c579b7aa0615ab59ce854ed646 100644
--- a/src/rust/amadeus-rs/amadeus/Cargo.toml
+++ b/src/rust/amadeus-rs/amadeus/Cargo.toml
@@ -9,9 +9,9 @@ lkt_lib       = { path = "../lkt-lib" }
 amadeus_macro = { path = "../amadeus-macro" }
 serde         = { version = "1", default-features = false,     features = [ "derive", "std" ] }
 serde_json    = { version = "1", default-features = false,     features = [ "std" ] }
-eframe        = { version = "0.17.0",                          features = [ "persistence" ] }
+eframe        = { version = "0",                               features = [ "persistence" ] }
 image         = { version = "^0.24", default-features = false, features = [ "jpeg", "ico", "png" ] }
-egui          = { version = "0.17.0",                          features = [ "extra_debug_asserts", "extra_asserts", "serde", "persistence" ] }
-epi           = { version = "0.17.0",                          features = [ "persistence" ] }
+egui          = { version = "0",                               features = [ "extra_debug_asserts", "extra_asserts", "serde", "persistence" ] }
+epi           = { version = "0",                               features = [ "persistence" ] }
 log           = { version = "0.4" }
 lazy_static   = "1"
\ No newline at end of file
diff --git a/src/rust/amadeus-rs/amadeus/src/amadeus.rs b/src/rust/amadeus-rs/amadeus/src/amadeus.rs
index f3c857bb7c9c2cfeff4efb062a1a9f7684358e30..a7c1abcc6ea5f819951efb2488b871b64874e197 100644
--- a/src/rust/amadeus-rs/amadeus/src/amadeus.rs
+++ b/src/rust/amadeus-rs/amadeus/src/amadeus.rs
@@ -10,10 +10,7 @@ use crate::{
     widgets,
 };
 use amadeus_macro::either;
-use eframe::{
-    egui,
-    epi::{self, App},
-};
+use eframe::{egui, App};
 use lkt_lib::{
     query::LektorQuery,
     response::LektorFormatedResponse,
@@ -98,8 +95,24 @@ impl Default for Amadeus<'_> {
 }
 
 impl Amadeus<'_> {
-    pub fn create() -> Box<Self> {
-        Box::new(Amadeus::default())
+    pub fn create(cc: &eframe::CreationContext<'_>) -> Box<Self> {
+        let mut ret = Amadeus::default();
+        let ctx = &cc.egui_ctx;
+        if let Some(storage) = cc.storage {
+            ret.config = eframe::get_value(storage, "amadeus-rs-config").unwrap_or_default();
+        }
+
+        ctx.set_fonts(utils::font::get_font_definitions());
+        ret.load_amadeus_logo(ctx);
+
+        let mut style = (*ctx.style()).clone();
+        style.text_styles = utils::font::get_font_styles();
+        ctx.set_style(style);
+
+        ret.apply_settings();
+        ret.fill_debug_values();
+
+        Box::new(ret)
     }
 
     fn load_amadeus_logo(&mut self, ctx: &egui::Context) {
@@ -109,7 +122,8 @@ impl Amadeus<'_> {
             [size_x as usize, size_y as usize],
             pixels.as_slice(),
         );
-        self.amadeus_logo_texture = Some(ctx.load_texture("amadeus-logo", logo_texture));
+        self.amadeus_logo_texture =
+            Some(ctx.load_texture("amadeus-logo", logo_texture, egui::TextureFilter::Linear));
     }
 
     fn collect_fulfilled_actions(&mut self) -> Vec<(u64, action::Action)> {
@@ -138,7 +152,7 @@ impl Amadeus<'_> {
         }
     }
 
-    fn render_side_panel(&mut self, ctx: &egui::Context, _frame: &epi::Frame) {
+    fn render_side_panel(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
         if self.config.side_panel_show {
             egui::SidePanel::left("LEFT_PANEL")
                 .resizable(true)
@@ -158,7 +172,7 @@ impl Amadeus<'_> {
         }
     }
 
-    fn render_central_panel(&mut self, ctx: &egui::Context, _frame: &epi::Frame) {
+    fn render_central_panel(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
         egui::CentralPanel::default().show(ctx, |ui| {
             use utils::AmadeusMainView::*;
             match self.config.main_panel_view {
@@ -184,7 +198,7 @@ impl Amadeus<'_> {
         });
     }
 
-    fn render_bottom_panel(&mut self, ctx: &egui::Context, _frame: &epi::Frame) {
+    fn render_bottom_panel(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
         let seconds = time::SystemTime::now()
             .duration_since(time::SystemTime::UNIX_EPOCH)
             .unwrap()
@@ -207,7 +221,7 @@ impl Amadeus<'_> {
                     if let Some(current_kara) = &self.lektord_current_kara {
                         current_kara.render_compact(ui, self.config.dark_mode);
                     }
-                    ui.with_layout(egui::Layout::right_to_left(), |ui| {
+                    ui.with_layout(egui::Layout::right_to_left(egui::Align::Min), |ui| {
                         ui.style_mut().override_text_style = Some(utils::font::heading3());
                         ui.add_space(constants::PADDING * 2.);
                         ui.label(text_duration);
@@ -222,11 +236,11 @@ impl Amadeus<'_> {
             });
     }
 
-    fn render_top_panel(&mut self, ctx: &egui::Context, frame: &epi::Frame) {
+    fn render_top_panel(&mut self, ctx: &egui::Context, frame: &mut eframe::Frame) {
         egui::TopBottomPanel::top("MENU").show(ctx, |ui| {
             ui.add_space(constants::TOP_PANEL_PADDING * 2.);
             egui::menu::bar(ui, |ui| {
-                ui.with_layout(egui::Layout::left_to_right(), |ui| {
+                ui.with_layout(egui::Layout::left_to_right(egui::Align::Min), |ui| {
                     ui.style_mut().override_text_style = Some(utils::font::heading1());
                     if ui.add(egui::Button::new("Amadeus").frame(false)).clicked() {
                         self.config.side_panel_show = !self.config.side_panel_show;
@@ -285,10 +299,10 @@ impl Amadeus<'_> {
                         .then(|| self.actions.push(action::Action::PlaybackNext));
                 });
 
-                ui.with_layout(egui::Layout::right_to_left(), |ui| {
+                ui.with_layout(egui::Layout::right_to_left(egui::Align::Min), |ui| {
                     ui.style_mut().override_text_style = Some(utils::font::body());
                     if ui.add(egui::Button::new("❌")).clicked() {
-                        frame.quit();
+                        frame.close();
                     }
 
                     ui.style_mut().override_text_style = Some(utils::font::small_body());
@@ -449,7 +463,7 @@ impl Amadeus<'_> {
 }
 
 impl App for Amadeus<'_> {
-    fn update(&mut self, ctx: &egui::Context, frame: &epi::Frame) {
+    fn update(&mut self, ctx: &egui::Context, frame: &mut eframe::Frame) {
         self.begin_render_instant = time::SystemTime::now();
         ctx.request_repaint();
         self.set_visuals(ctx);
@@ -482,30 +496,9 @@ impl App for Amadeus<'_> {
         }
     }
 
-    fn setup(
-        &mut self,
-        ctx: &egui::Context,
-        _frame: &epi::Frame,
-        maybe_storage: Option<&dyn epi::Storage>,
-    ) {
-        if let Some(storage) = maybe_storage {
-            self.config = eframe::epi::get_value(storage, "amadeus-rs-config").unwrap_or_default();
-        }
-
-        ctx.set_fonts(utils::font::get_font_definitions());
-        self.load_amadeus_logo(ctx);
-
-        let mut style = (*ctx.style()).clone();
-        style.text_styles = utils::font::get_font_styles();
-        ctx.set_style(style);
-
-        self.apply_settings();
-        self.fill_debug_values();
-    }
-
-    fn save(&mut self, storage: &mut dyn eframe::epi::Storage) {
+    fn save(&mut self, storage: &mut dyn eframe::Storage) {
         if self.has_config_changed {
-            eframe::epi::set_value(storage, "amadeus-rs-config", &self.config);
+            eframe::set_value(storage, "amadeus-rs-config", &self.config);
             self.has_config_changed = false;
         }
     }
@@ -521,8 +514,4 @@ impl App for Amadeus<'_> {
     fn auto_save_interval(&self) -> time::Duration {
         time::Duration::from_secs(1)
     }
-
-    fn name(&self) -> &str {
-        "Amadeus"
-    }
 }
diff --git a/src/rust/amadeus-rs/amadeus/src/cards/card.rs b/src/rust/amadeus-rs/amadeus/src/cards/card.rs
index b3645f253037ba95fbe53e2f24464b742b21e84f..5d3a9027c15437e8dd5f0eb33dbe11820127486f 100644
--- a/src/rust/amadeus-rs/amadeus/src/cards/card.rs
+++ b/src/rust/amadeus-rs/amadeus/src/cards/card.rs
@@ -103,7 +103,7 @@ impl Card<'_, Kara> for KaraCard {
                         format!("{} - {}", self.inner.category, self.inner.language),
                     );
                     if left_space >= MIN_WIDTH_FOR_ADDITIONAL_INFOS {
-                        ui.with_layout(egui::Layout::right_to_left(), |ui| {
+                        ui.with_layout(egui::Layout::right_to_left(egui::Align::Min), |ui| {
                             ui.label(format!("kara by {}", self.inner.author));
                         });
                     }
@@ -114,7 +114,7 @@ impl Card<'_, Kara> for KaraCard {
                     ui.colored_label(constants::get_text_color(dark_mode), song);
                     ui.style_mut().override_text_style = Some(utils::font::body());
                     if left_space >= MIN_WIDTH_FOR_ADDITIONAL_INFOS {
-                        ui.with_layout(egui::Layout::right_to_left(), |ui| {
+                        ui.with_layout(egui::Layout::right_to_left(egui::Align::Min), |ui| {
                             if !self.inner.is_available {
                                 ui.colored_label(
                                     constants::get_accent_color(dark_mode),
diff --git a/src/rust/amadeus-rs/amadeus/src/main.rs b/src/rust/amadeus-rs/amadeus/src/main.rs
index 23ee924e005b8b70d3b83ba65d0d127348b0af38..bcc5cb62d9ca7394f8b6b2c09833cbbde3034830 100644
--- a/src/rust/amadeus-rs/amadeus/src/main.rs
+++ b/src/rust/amadeus-rs/amadeus/src/main.rs
@@ -16,7 +16,7 @@ fn main() {
     logger::set_level(log::Level::Debug);
 
     eframe::run_native(
-        amadeus::Amadeus::create(),
+        "amadeus-rs",
         eframe::NativeOptions {
             maximized: false,
             decorated: true,
@@ -26,5 +26,6 @@ fn main() {
             icon_data: Some(utils::get_icon_data()),
             ..Default::default()
         },
+        Box::new(|cc| amadeus::Amadeus::create(cc)),
     );
 }
diff --git a/src/rust/amadeus-rs/amadeus/src/utils/deamon.rs b/src/rust/amadeus-rs/amadeus/src/utils/deamon.rs
index 33363d7b63d3efb2b552fed178942807365ed4bc..2cc99ad39eaf7ca76c2dafe3a7043263f0670e3c 100644
--- a/src/rust/amadeus-rs/amadeus/src/utils/deamon.rs
+++ b/src/rust/amadeus-rs/amadeus/src/utils/deamon.rs
@@ -14,7 +14,6 @@ use std::{
 };
 
 pub trait Deamon: Sized {
-    #[must_use]
     type Channels;
 
     /// Quit the deamon
diff --git a/src/rust/amadeus-rs/amadeus/src/utils/mod.rs b/src/rust/amadeus-rs/amadeus/src/utils/mod.rs
index 8cb073149ccca5b9d67f44a1154c1ff2292c9cc4..babd0e72d59234e083392acc5b8a71e16a135da1 100644
--- a/src/rust/amadeus-rs/amadeus/src/utils/mod.rs
+++ b/src/rust/amadeus-rs/amadeus/src/utils/mod.rs
@@ -19,9 +19,9 @@ pub(crate) fn get_icon_as_dynamic_image() -> (image::RgbaImage, [u32; 2]) {
     return (logo_buffer, size);
 }
 
-pub(crate) fn get_icon_data() -> epi::IconData {
+pub(crate) fn get_icon_data() -> eframe::IconData {
     let (logo_buffer, [size_x, size_y]) = get_icon_as_dynamic_image();
-    return epi::IconData {
+    return eframe::IconData {
         rgba: logo_buffer.to_vec(),
         height: size_y,
         width: size_x,
diff --git a/src/rust/amadeus-rs/amadeus/src/widgets/mod.rs b/src/rust/amadeus-rs/amadeus/src/widgets/mod.rs
index 2bc632de7aaa183d402ab91cb446ed8b1e864f46..1f9ab805afdb623062e42f0704e9fee3db5ce0e5 100644
--- a/src/rust/amadeus-rs/amadeus/src/widgets/mod.rs
+++ b/src/rust/amadeus-rs/amadeus/src/widgets/mod.rs
@@ -50,7 +50,7 @@ pub fn add_labelled_toggle_switch(
     ui.horizontal(|ui| {
         ui.style_mut().override_text_style = Some(utils::font::body());
         ui.add(egui::Label::new(before));
-        ui.with_layout(egui::Layout::right_to_left(), |ui| {
+        ui.with_layout(egui::Layout::right_to_left(egui::Align::Min), |ui| {
             let response = ui.add(toggle_switch(dark_mode, switch));
             *changed |= response.changed();
         });