diff --git a/src/events.liq b/src/events.liq
index d32956915e4ea2e0cea4bdfe92db21f43c8d4ecd..8ff9817504b130f449cbabc26f58de2475d1e041 100644
--- a/src/events.liq
+++ b/src/events.liq
@@ -18,21 +18,11 @@
 
 
 
-# Updates the playout state
-def on_playout_state_change(source_type) =
-    if source_type == "fallback" then
-        engine_state.is_fallback := true
-    else
-        engine_state.is_fallback := false
-    end
-end
-
 # Called when some new metadata info is available
 def on_metadata_notification(meta) =
     # FIXME For some reason stream channels do not pass the `source` property in meta
     channel_name = meta["source"]
     source_type = eval_source_type(channel_name)
-    on_playout_state_change(source_type)
 
     log(level=3, label="metadata", "Raw metadata before POST:\n\n #{meta}\n\n")
 
diff --git a/src/in_fallback.liq b/src/in_fallback.liq
index c90ba59e2d6143e7e0504c588b6157e20c05280f..61aa27b03220e2b82fd21230b978f968401e9c3d 100644
--- a/src/in_fallback.liq
+++ b/src/in_fallback.liq
@@ -43,6 +43,16 @@ def on_track_change(s) =
     end
 end
 
+# Called when a fallback source is actively playing
+def on_fallback_notify(metadata) =
+    engine_state.is_fallback := true
+    on_metadata_notification(metadata)
+end
+
+# Called when a fallback source stopped playing
+def on_fallback_leave_notify() =
+    engine_state.is_fallback := false
+end
 
 #####################################
 #            FUNCTIONS              #
@@ -60,10 +70,9 @@ def attach_fallback_source(main_stream)
                 reload_mode="seconds")
 
             s = amplify(id="fallback_folder", 1., override="replay_gain", s)
-            # s.on_metadata(on_metadata_notification)
-            # s.on_track(on_metadata_notification)
-            s = source.on_track(id="fallback_folder", s, on_metadata_notification)
+            s = source.on_track(id="fallback_folder", s, on_fallback_notify)
             s = mksafe(s)
+            source.on_leave(s, on_fallback_leave_notify)
 
             fallback_folder := s
             main_stream.on_track(on_track_change)
@@ -80,10 +89,9 @@ def attach_fallback_source(main_stream)
                 reload=0)
 
             s = amplify(id="fallback_playlist", 1., override="replay_gain", s)
-            # s.on_metadata(on_metadata_notification)
-            # s.on_track(on_metadata_notification)
-            s = source.on_track(id="fallback_playlist", s, on_metadata_notification)
+            s = source.on_track(id="fallback_playlist", s, on_fallback_notify)
             s = mksafe(s)
+            source.on_leave(s, on_fallback_leave_notify)
 
             fallback_playlist := s
             main_stream.on_track(on_track_change)