diff --git a/src/in_queue.liq b/src/in_queue.liq
index 85653bc19801132d1552eae7362a9909d68a6159..91b646b8988af77ebdf78925ff3d9bd42fd86b1f 100644
--- a/src/in_queue.liq
+++ b/src/in_queue.liq
@@ -18,17 +18,30 @@
 
 
 
+#####################################
+#            FUNCTIONS              #
+#####################################
+
+# Clear all requests in the queue
+def clear_queue(s) =
+    q = s.queue()
+    s.set_queue([])
+    s.skip()
+    list.iter(request.destroy, q)
+end
+
+
 #####################################
 #           QUEUE SOURCES           #
 #####################################
 
 # Create Sources
-input_filesystem_0 = request.queue(id="in_filesystem_0")
-input_filesystem_1 = request.queue(id="in_filesystem_1")
+input_filesystem_raw_0 = request.queue(id="in_filesystem_0")
+input_filesystem_raw_1 = request.queue(id="in_filesystem_1")
 
 # Apply ReplayGain normalization, if metadata available
-input_filesystem_0 = amplify(id="in_filesystem_0", 1., override="replay_gain", input_filesystem_0)
-input_filesystem_1 = amplify(id="in_filesystem_1", 1., override="replay_gain", input_filesystem_1)
+input_filesystem_0 = amplify(id="in_filesystem_0", 1., override="replay_gain", input_filesystem_raw_0)
+input_filesystem_1 = amplify(id="in_filesystem_1", 1., override="replay_gain", input_filesystem_raw_1)
 # See https://github.com/savonet/liquidsoap/discussions/2537
 # input_filesystem_0 = replaygain(input_filesystem_0)
 # input_filesystem_1 = replaygain(input_filesystem_1)
@@ -41,32 +54,31 @@ input_filesystem_1.on_metadata(on_metadata_notification)
 #          SERVER FUNCTIONS         #
 #####################################
 
-
 # Clear Default Queue A
 server.register(namespace=source.id(input_filesystem_0),
-        description="Clear all items of the default queue A.",
+        description="Skip & clear all items from queue A.",
         usage="clear",
         "clear",
 
     fun (s) ->
         begin
             ignore(s)
-            clear_queue(input_filesystem_0)
-            "Clearing done."
+            clear_queue(input_filesystem_raw_0)
+            "OK"
         end
     )
 
 # Clear Default Queue B
 server.register(namespace=source.id(input_filesystem_1),
-        description="Clear all items of the default queue B.",
+        description="Skip & clear all items from queue B.",
         usage="clear",
         "clear",
 
     fun (s) ->
         begin
             ignore(s)
-            clear_queue(input_filesystem_1)
-            "Clearing done."
+            clear_queue(input_filesystem_raw_1)
+            "OK"
         end
     )
 
diff --git a/src/library.liq b/src/library.liq
index e395f50c3a30a13c5d25a9eb0f77bacdf75aada2..2b1a192fb150211a59e06eb602b01fedcb4db75d 100644
--- a/src/library.liq
+++ b/src/library.liq
@@ -18,29 +18,6 @@
 
 
 
-
-#####################################
-#         CLEAR SOURCE              #
-#####################################
-
-def clear_items(ns) =
-    ret = server.execute("#{source.id(ns)}.queue")
-    ret = list.hd(default="", ret)
-    if ret == "" then
-        log("Queue cleared.")
-        (-1.)
-    else
-        log("There are still items in the queue '#{source.id(ns)}', skip RID #{ret} ...")
-        source.skip(ns)
-        (0.1)
-    end
-end
-
-def clear_queue(ns) =
-    add_timeout(fast=false, 0.5, {clear_items(ns)})
-end
-
-
 #####################################
 #         DYNAMIC SOURCES           #
 #####################################