diff --git a/src/serverfunctions.liq b/src/serverfunctions.liq
index 24b269f630ee4f5bd7098ad500ccb7dd3582dbae..4373e3dc8a38e5a755eab907c90a1db259e5319b 100644
--- a/src/serverfunctions.liq
+++ b/src/serverfunctions.liq
@@ -119,25 +119,11 @@ server.register(
       )
 
       so = []
+
+      # TODO: add all lineouts
       so =
         s0_enable ? list.add(("out_line_0", ("connected", "stream0")), so) : so
-      # so =
-      #   s1_enable
-      #   ? list.add(("out_line_1", ("connected", "#{s1_connected()}")), so) : so
-      # so =
-      #   s2_enable
-      #   ? list.add(("out_line_2", ("connected", "#{s2_connected()}")), so) : so
-      # so =
-      #   s3_enable
-      #   ? list.add(("out_line_3", ("connected", "#{s3_connected()}")), so) : so
-      # so =
-      #   s4_enable
-      #   ? list.add(("out_line_4", ("connected", "#{s4_connected()}")), so) : so
 
-      # lo = a1_out != '' ? list.add("out_line_1", lo) : lo
-      # lo = a2_out != '' ? list.add("out_line_2", lo) : lo
-      # lo = a3_out != '' ? list.add("out_line_3", lo) : lo
-      # lo = a4_out != '' ? list.add("out_line_4", lo) : lo
       json_data = json()
       json_data.add("line", lo_list())
       json_data.add("stream", so)
@@ -231,97 +217,50 @@ server.register(
   fadeTo
 )
 
-# def icy_update(v) =
-#   # Parse the argument
-#   l = string.split(separator=",", v)
-#   def split(l, v) =
-#     v = string.split(separator="=", v)
-#     if
-#       list.length(v) >= 2
-#     then
-#       list.append(l, [(list.nth(v, 0, default=""), list.nth(v, 1, default=""))])
-#     else
-#       l
-#     end
-#   end
-#   meta = list.fold(split, [], l)
-
-#   # Update metadata
-#   if
-#     s0_enable == true
-#   then
-#     icy.update_metadata(
-#       mount=s0_mount,
-#       user=s0_user,
-#       password=s0_pass,
-#       host=s0_host,
-#       port=s0_port,
-#       meta
-#     )
-#   end
-
-#   if
-#     s1_enable == true
-#   then
-#     icy.update_metadata(
-#       mount=s1_mount,
-#       user=s1_user,
-#       password=s1_pass,
-#       host=s1_host,
-#       port=s1_port,
-#       meta
-#     )
-#   end
-
-#   if
-#     s2_enable == true
-#   then
-#     icy.update_metadata(
-#       mount=s2_mount,
-#       user=s2_user,
-#       password=s2_pass,
-#       host=s2_host,
-#       port=s2_port,
-#       meta
-#     )
-#   end
+# TODO: reimplement this as list based approach
 
-#   if
-#     s3_enable == true
-#   then
-#     icy.update_metadata(
-#       mount=s3_mount,
-#       user=s3_user,
-#       password=s3_pass,
-#       host=s3_host,
-#       port=s3_port,
-#       meta
-#     )
-#   end
+def icy_update(v) =
+  # Parse the argument
+  l = string.split(separator=",", v)
+  def split(l, v) =
+    v = string.split(separator="=", v)
+    if
+      list.length(v) >= 2
+    then
+      list.append(l, [(list.nth(v, 0, default=""), list.nth(v, 1, default=""))])
+    else
+      l
+    end
+  end
+  meta = list.fold(split, [], l)
 
-#   if
-#     s4_enable == true
-#   then
-#     icy.update_metadata(
-#       mount=s4_mount,
-#       user=s4_user,
-#       password=s4_pass,
-#       host=s4_host,
-#       port=s4_port,
-#       meta
-#     )
-#   end
+  # Update metadata
+  def update_metadata(stream) =
+    if
+      stream.enabled
+    then
+      icy.update_metadata(
+        mount=stream.mountpoint,
+        user=stream.user,
+        password=stream.password,
+        host=stream.host,
+        port=int_of_float(stream.port),
+        meta
+      )
+    end
+  end
 
-#   "OK"
-# end
+  list.iter(update_metadata, config.stream)
 
+  "OK"
+end
 
-# server.register(
-#   "update",
-#   namespace="metadata",
-#   description=
-#     "Update metadata",
-#   usage=
-#     "update title=foo,album=bar, ...",
-#   icy_update
-# )
\ No newline at end of file
+server.register(
+  "update",
+  namespace="metadata",
+  description=
+    "Update metadata",
+  usage=
+    "update title=foo,album=bar, ...",
+  icy_update
+)