diff --git a/inc/lektor/commands.h b/inc/lektor/commands.h
index 82463eb68fe269904413e03a3b6fbf7a83cf2b20..80585938d70729bb166f13b7c3224ab97bc96bbf 100644
--- a/inc/lektor/commands.h
+++ b/inc/lektor/commands.h
@@ -88,7 +88,8 @@ bool command_noidle(struct lkt_state *srv, size_t c, char *[LKT_MESSAGE_ARGS_MAX
 bool command_find(struct lkt_state *srv, size_t c, char *cmd_args[LKT_MESSAGE_ARGS_MAX],
                   long continuation, database_search_init_func init);
 
-/* Set options for the lektor such as `random`, `single`, `repeat`, etc */
+/* Set options for the lektor such as `random`, `single`, `repeat`, etc. Comes
+ * with helpers functions for callback support (trie structure). */
 typedef enum {
     LKT_PLAYBACK_OPTION_NONE,
     LKT_PLAYBACK_OPTION_RANDOM,
@@ -98,8 +99,37 @@ typedef enum {
     LKT_PLAYBACK_OPTION_VOLUME,
 } LKT_PLAYBACK_OPTION;
 
-bool command_set_playback_option(struct lkt_state *srv, size_t c, LKT_PLAYBACK_OPTION opt,
-                                 char *[LKT_MESSAGE_ARGS_MAX]);
+bool command_set_playback_option(struct lkt_state *, size_t, LKT_PLAYBACK_OPTION, char *[LKT_MESSAGE_ARGS_MAX]);
+
+PRIVATE_FUNCTION bool
+command_set_playback_option_random(struct lkt_state *srv, size_t c, char *args[LKT_MESSAGE_ARGS_MAX])
+{
+    return command_set_playback_option(srv, c, LKT_PLAYBACK_OPTION_RANDOM, args);
+}
+
+PRIVATE_FUNCTION bool
+command_set_playback_option_repeat(struct lkt_state *srv, size_t c, char *args[LKT_MESSAGE_ARGS_MAX])
+{
+    return command_set_playback_option(srv, c, LKT_PLAYBACK_OPTION_REPEAT, args);
+}
+
+PRIVATE_FUNCTION bool
+command_set_playback_option_volume(struct lkt_state *srv, size_t c, char *args[LKT_MESSAGE_ARGS_MAX])
+{
+    return command_set_playback_option(srv, c, LKT_PLAYBACK_OPTION_VOLUME, args);
+}
+
+PRIVATE_FUNCTION bool
+command_set_playback_option_single(struct lkt_state *srv, size_t c, char *args[LKT_MESSAGE_ARGS_MAX])
+{
+    return command_set_playback_option(srv, c, LKT_PLAYBACK_OPTION_SINGLE, args);
+}
+
+PRIVATE_FUNCTION bool
+command_set_playback_option_consume(struct lkt_state *srv, size_t c, char *args[LKT_MESSAGE_ARGS_MAX])
+{
+    return command_set_playback_option(srv, c, LKT_PLAYBACK_OPTION_CONSUME, args);
+}
 
 /* Authentificate users */
 bool command_password(struct lkt_state *srv, size_t c, char *[LKT_MESSAGE_ARGS_MAX]);
diff --git a/src/net/listen.c b/src/net/listen.c
index d32a2019ae11961c0ad4508aed23033dfaa7bba8..0b4c5379bda5cae3f67ebd95a69862ee7bb63510 100644
--- a/src/net/listen.c
+++ b/src/net/listen.c
@@ -26,15 +26,10 @@
 #define CHARS_MAX (sizeof(char) * 256)
 
 typedef enum {
-    /* Not a terminal node, so no commands */
-    LKT_COMMAND_NULL,
-
-    /* Some common types of commands */
-    LKT_COMMAND_SIMPLE,  /* srv, c, args      */
-    LKT_COMMAND_INTEGER, /* srv, c, args, int */
-    LKT_COMMAND_ANON,    /* srv, args         */
-
-    /* Some specialized types... */
+    LKT_COMMAND_NULL,           /* Not a terminal node, so no commands  */
+    LKT_COMMAND_SIMPLE,         /* srv, c, args                         */
+    LKT_COMMAND_CONTINUATION,   /* srv, c, args, int                    */
+    LKT_COMMAND_ANON,           /* srv, args                            */
 } LKT_COMMAND_TYPE;
 
 struct cmd_trie_node {
@@ -153,7 +148,7 @@ ___cmd_trie_print(struct cmd_trie_node *root, char *old_prefix, const size_t len
     /* A terminal node */
     case LKT_COMMAND_SIMPLE:
     case LKT_COMMAND_ANON:
-    case LKT_COMMAND_INTEGER:
+    case LKT_COMMAND_CONTINUATION:
         LKT_OUTPUT("CMD_TRIE", "Got function of type %d in trie '%s'", root->type, prefix);
         break;
     }
@@ -212,6 +207,12 @@ ___cmd_trie_init(void)
     cmd_trie_insert(cmd_trie_root, "swapid",            FUNCTION_POINTER(command_swapid),           LKT_COMMAND_ANON);
     cmd_trie_insert(cmd_trie_root, "__flat",            FUNCTION_POINTER(command_flat),             LKT_COMMAND_ANON);
 
+    cmd_trie_insert(cmd_trie_root, "random",            FUNCTION_POINTER(command_set_playback_option_random),  LKT_COMMAND_SIMPLE);
+    cmd_trie_insert(cmd_trie_root, "repeat",            FUNCTION_POINTER(command_set_playback_option_repeat),  LKT_COMMAND_SIMPLE);
+    cmd_trie_insert(cmd_trie_root, "setvol",            FUNCTION_POINTER(command_set_playback_option_volume),  LKT_COMMAND_SIMPLE);
+    cmd_trie_insert(cmd_trie_root, "single",            FUNCTION_POINTER(command_set_playback_option_single),  LKT_COMMAND_SIMPLE);
+    cmd_trie_insert(cmd_trie_root, "consume",           FUNCTION_POINTER(command_set_playback_option_consume), LKT_COMMAND_SIMPLE);
+
     cmd_trie_insert(cmd_trie_root, "playlistid",        FUNCTION_POINTER(command_queue_listid),     LKT_COMMAND_SIMPLE);
     cmd_trie_insert(cmd_trie_root, "playlist",          FUNCTION_POINTER(command_queue_list),       LKT_COMMAND_SIMPLE);
     cmd_trie_insert(cmd_trie_root, "playlistinfo",      FUNCTION_POINTER(command_queue_list),       LKT_COMMAND_SIMPLE);
@@ -224,8 +225,8 @@ ___cmd_trie_init(void)
     cmd_trie_insert(cmd_trie_root, "save",              FUNCTION_POINTER(command_plt_export),       LKT_COMMAND_ANON);
     cmd_trie_insert(cmd_trie_root, "__plt_import",      FUNCTION_POINTER(command_plt_import),       LKT_COMMAND_ANON);
     cmd_trie_insert(cmd_trie_root, "__dump",            FUNCTION_POINTER(command_dump),             LKT_COMMAND_ANON);
-    cmd_trie_insert(cmd_trie_root, "listplaylists",     FUNCTION_POINTER(command_plt_list),         LKT_COMMAND_INTEGER);
-    cmd_trie_insert(cmd_trie_root, "listplaylist",      FUNCTION_POINTER(command_plt_ctx),          LKT_COMMAND_INTEGER);
+    cmd_trie_insert(cmd_trie_root, "listplaylists",     FUNCTION_POINTER(command_plt_list),         LKT_COMMAND_CONTINUATION);
+    cmd_trie_insert(cmd_trie_root, "listplaylist",      FUNCTION_POINTER(command_plt_ctx),          LKT_COMMAND_CONTINUATION);
     cmd_trie_insert(cmd_trie_root, "sticker",           FUNCTION_POINTER(command_sticker_handle),   LKT_COMMAND_SIMPLE);
 
     /* Commands that requires authentification. */
@@ -394,7 +395,7 @@ handle_simple_command(struct lkt_state *srv, size_t c, struct lkt_command cmd)
                 break;
 
             /* Need the continuation */
-            case LKT_COMMAND_INTEGER:
+            case LKT_COMMAND_CONTINUATION:
                 err = ! handle_function.integer(srv, c, cmd.args, cmd.cont);
                 break;
 
@@ -407,34 +408,34 @@ handle_simple_command(struct lkt_state *srv, size_t c, struct lkt_command cmd)
 
         /* Some commands are not in the structure because they have a unique
          * way to handle arguments. */
-        else if (STR_MATCH(cmd.name, "close"))
+
+        else if (STR_MATCH(cmd.name, "close")) {
             err = !lkt_close_client(srv, c);
-        else if (STR_MATCH(cmd.name, "ping"))
+        }
+
+        else if (STR_MATCH(cmd.name, "ping")) {
             err = 0;
+        }
 
-        else if (STR_MATCH(cmd.name, "listplaylistinfo"))
+        else if (STR_MATCH(cmd.name, "listplaylistinfo")) {
             err = !command_find(srv, c, cmd.args, cmd.cont, database_search_playlist_init);
-
-        else if (STR_MATCH(cmd.name, "random"))
-            err = !command_set_playback_option(srv, c, LKT_PLAYBACK_OPTION_RANDOM, cmd.args);
-        else if (STR_MATCH(cmd.name, "repeat"))
-            err = !command_set_playback_option(srv, c, LKT_PLAYBACK_OPTION_REPEAT, cmd.args);
-        else if (STR_MATCH(cmd.name, "setvol"))
-            err = !command_set_playback_option(srv, c, LKT_PLAYBACK_OPTION_VOLUME, cmd.args);
-        else if (STR_MATCH(cmd.name, "single"))
-            err = !command_set_playback_option(srv, c, LKT_PLAYBACK_OPTION_SINGLE, cmd.args);
-        else if (STR_MATCH(cmd.name, "consume"))
-            err = !command_set_playback_option(srv, c, LKT_PLAYBACK_OPTION_CONSUME, cmd.args);
+        }
 
         else if (STR_MATCH(cmd.name, "idle")) {
             err = !command_idle(srv, c, cmd.args);
             goto end_no_send_status;
-        } else if (STR_MATCH(cmd.name, "search") || STR_MATCH(cmd.name, "find") || STR_MATCH(cmd.name, "list") ||
+        }
+
+        else if (STR_MATCH(cmd.name, "search") || STR_MATCH(cmd.name, "find") || STR_MATCH(cmd.name, "list") ||
                    STR_MATCH(cmd.name, "listall") || STR_MATCH(cmd.name, "listallinfo") ||
-                   STR_MATCH(cmd.name, "listfiles") || STR_MATCH(cmd.name, "lsinfo"))
+                   STR_MATCH(cmd.name, "listfiles") || STR_MATCH(cmd.name, "lsinfo")) {
             err = !command_find(srv, c, cmd.args, cmd.cont, database_search_database_init);
-        else
+        }
+
+        /* Not found! */
+        else {
             err = 2;
+        }
 
         break;
 
@@ -443,10 +444,16 @@ handle_simple_command(struct lkt_state *srv, size_t c, struct lkt_command cmd)
         if (STR_MATCH(cmd.name, "idle")) {
             err = !command_idle(srv, c, cmd.args);
             goto end_no_send_status;
-        } else if (STR_MATCH(cmd.name, "noidle"))
+        }
+
+        else if (STR_MATCH(cmd.name, "noidle")) {
             err = !command_noidle(srv, c, NULL);
-        else
+        }
+
+        /* Not found! */
+        else {
             err = 2;
+        }
 
         break;
     }