diff --git a/Cargo.toml b/Cargo.toml
index 49ac4e7..e3f236f 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -38,3 +38,4 @@ deunicode = "1.4.2"
 opener = { version = "0.7.0", features = ["reveal"] }
 tempfile = "3.10.1"
 listenbrainz = "0.7.0"
+discord-rpc-client = "0.4.0"
diff --git a/src/music_controller/connections.rs b/src/music_controller/connections.rs
index dec723c..bf5e688 100644
--- a/src/music_controller/connections.rs
+++ b/src/music_controller/connections.rs
@@ -3,6 +3,7 @@ use std::{
     error::Error,
 };
 
+use discord_rpc_client::Client;
 use listenbrainz::ListenBrainz;
 use uuid::Uuid;
 
@@ -65,6 +66,13 @@ impl Controller {
         client.listen(artist, track, release)?;
         Ok(())
     }
+
+    pub fn discord_song_change(client: &mut Client,song: Song) {
+        client.set_activity(|a| {
+            a.state(format!("Listening to {}", song.get_tag(&Tag::Title).unwrap()))
+            .into()
+        });
+    }
 }
 
 #[cfg(test)]
diff --git a/src/music_controller/queue.rs b/src/music_controller/queue.rs
index 483010f..0559696 100644
--- a/src/music_controller/queue.rs
+++ b/src/music_controller/queue.rs
@@ -66,7 +66,7 @@ impl QueueItemType<'_> {
                 if !shuffled {
                     Some(album.track(*disc as usize, *index as usize).unwrap().location.clone())
                 }else {
-                    todo!()
+                    todo!() //what to do for non shuffled album
                 }
             },
             ExternalSong(uri) => { Some(uri.clone()) },
diff --git a/src/music_storage/utils.rs b/src/music_storage/utils.rs
index 1f68a8c..2f04d4d 100644
--- a/src/music_storage/utils.rs
+++ b/src/music_storage/utils.rs
@@ -25,12 +25,12 @@ pub(super) fn normalize(input_string: &str) -> String {
 
 /// Write any data structure which implements [serde::Serialize]
 /// out to a [bincode] encoded file compressed using [snap]
-pub(super) fn write_file<T: serde::Serialize>(
+pub(super) fn write_file<T: serde::Serialize, U: std::convert::AsRef<Path>+std::convert::AsRef<std::ffi::OsStr>+Clone>(
     library: T,
-    path: PathBuf,
+    path: U,
 ) -> Result<(), Box<dyn Error>> {
     // Create a temporary name for writing out
-    let mut writer_name = path.clone();
+    let mut writer_name = PathBuf::from(&path);
     writer_name.set_extension("tmp");
 
     // Create a new BufWriter on the file and a snap frame encoder