diff --git a/src/main.rs b/src/main.rs
index 9346cc9..d395f23 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,4 +1,5 @@
 use anyhow::{
+    Context,
     Result,
 };
 use pipewire as pw;
@@ -17,12 +18,16 @@ use std::{
 };
 
 fn main() -> Result<()> {
-    let main_loop = pw::main_loop::MainLoop::new(None)?;
+    let main_loop = pw::main_loop::MainLoop::new(None)
+        .context("Failed to attach to the pipewire main loop")?;
 
-    let context = pw::context::Context::new(&main_loop)?;
-    let core = context.connect(None)?;
+    let context = pw::context::Context::new(&main_loop)
+        .context("Failed to create pipewire context")?;
+    let core = context.connect(None)
+        .context("Failed to get pipewire core")?;
 
-    let registry = Rc::new(core.get_registry()?);
+    let registry = Rc::new(core.get_registry()
+        .context("Failed to get pipewire registry from core")?);
     let registry_weak = Rc::downgrade(&registry);
 
     let nodes: Rc<RefCell<HashMap<u32, Box<dyn pw::proxy::ProxyT>>>> = Rc::new(RefCell::new(HashMap::new()));