diff --git a/inc/lektor/commands.h b/inc/lektor/commands.h
index bfa1d47fd8af71a719ed5e6a5815297fd38f489a..617046afe664f37f5bbd4af2bf5ae855f76cef8e 100644
--- a/inc/lektor/commands.h
+++ b/inc/lektor/commands.h
@@ -28,17 +28,16 @@ bool command_stop    (volatile sqlite3 *db, struct lkt_win *win,
 bool command_set_pos(volatile sqlite3 *db, struct lkt_win *win, mpd_idle_flag *watch_mask_ptr, int index);
 
 /* The queue */
-bool command_add       (volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr,
-                        int priority);
-bool command_addid     (volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr);
-bool command_multiaddid(volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr);
-bool command_del       (volatile sqlite3 *db, struct lkt_win *win, char *pos_range,                  mpd_idle_flag *watch_mask_ptr);
-bool command_delid     (volatile sqlite3 *db, struct lkt_win *win, char *id,                         mpd_idle_flag *watch_mask_ptr);
-bool command_clear     (volatile sqlite3 *db,                                                        mpd_idle_flag *watch_mask_ptr);
-bool command_crop      (volatile sqlite3 *db,                                                        mpd_idle_flag *watch_mask_ptr);
-bool command_move      (volatile sqlite3 *db, char *args[LKT_MESSAGE_ARGS_MAX],                      mpd_idle_flag *watch_mask_ptr);
-bool command_shuffle   (volatile sqlite3 *db,                                                        mpd_idle_flag *watch_mask_ptr);
-bool command_playid    (volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr);
+bool command_add    (volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr,
+                     int priority);
+bool command_addid  (volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr);
+bool command_del    (volatile sqlite3 *db, struct lkt_win *win, char *pos_range,                  mpd_idle_flag *watch_mask_ptr);
+bool command_delid  (volatile sqlite3 *db, struct lkt_win *win, char *id,                         mpd_idle_flag *watch_mask_ptr);
+bool command_clear  (volatile sqlite3 *db,                                                        mpd_idle_flag *watch_mask_ptr);
+bool command_crop   (volatile sqlite3 *db,                                                        mpd_idle_flag *watch_mask_ptr);
+bool command_move   (volatile sqlite3 *db, char *args[LKT_MESSAGE_ARGS_MAX],                      mpd_idle_flag *watch_mask_ptr);
+bool command_shuffle(volatile sqlite3 *db,                                                        mpd_idle_flag *watch_mask_ptr);
+bool command_playid (volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr);
 
 bool command_queue_list(struct lkt_state *srv, size_t c, char *args[LKT_MESSAGE_ARGS_MAX]);
 
diff --git a/src/commands.c b/src/commands.c
index 5a84e9a1d617199ac4415e7aa74641eb20742faf..5d53ae23ea0f33641ac397d7bcd6aaa3e8876e30 100644
--- a/src/commands.c
+++ b/src/commands.c
@@ -247,7 +247,9 @@ command_stop(volatile sqlite3 *db, struct lkt_win *win, mpd_idle_flag *watch_mas
 }
 
 bool
-command_add(volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr, int priority)
+command_add(volatile sqlite3 *db, struct lkt_win *win,
+            char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr,
+            int priority)
 {
     RETURN_UNLESS(args, "Invalid argument", false);
     *watch_mask_ptr |= MPD_IDLE_PLAYLIST;
@@ -264,44 +266,19 @@ command_add(volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_AR
 }
 
 bool
-command_addid(volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr)
+command_addid(volatile sqlite3 *db, struct lkt_win *win,
+              char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr)
 {
     UNUSED(win);
     RETURN_UNLESS(args, "Invalid argument", false);
-    char *endptr = NULL, err = 0;
+    errno = 0;
+    int i;
     struct lkt_uri uri = { .type = uri_id };
-    *watch_mask_ptr |= MPD_IDLE_PLAYLIST;
-    STRTOL(uri.id, args[0], endptr, err);
-    RETURN_IF(err, "STRTOL failed", false);
-    return database_queue_add_uri(db, &uri, 1);
-}
-
-bool
-command_multiaddid(volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr)
-{
-    UNUSED(win);
-    RETURN_UNLESS(args, "Invalid argument", false);
-    char *endptr = NULL, err = 0;
-    struct lkt_uri uri = { .type = uri_id };
-    *watch_mask_ptr |= MPD_IDLE_PLAYLIST;
-    STRTOL(uri.id, args[0], endptr, err);
-    RETURN_IF(err, "STRTOL failed", false);
-    return database_queue_add_uri(db, &uri, 1);
-    /*
-    UNUSED(win);
-    RETURN_UNLESS(args, "Invalid argument", false);
-    long id;
-    char *endptr = malloc(sizeof(char)), err = 0;
-    *watch_mask_ptr |= MPD_IDLE_PLAYLIST;
-    //STRTOL(id, args[0], endptr, err);
-    while ( (id=strtol(args[0], &endptr, 10)) != 0 )
-    {
-        RETURN_IF(err, "STRTOL failed", false);
-        database_queue_add_id(db, id, 1);
-        args[0] = endptr;
+    for (i = 0; (uri.id = strtol(args[i], NULL, 0)) && ! errno; ++i) {
+        errno |= database_queue_add_id(db, uri.id, 1);
     }
-    return true;
-    */
+    *watch_mask_ptr |= MPD_IDLE_PLAYLIST;
+    return ! errno;
 }
 
 inline bool
diff --git a/src/net/listen.c b/src/net/listen.c
index 4eb1b1fe9a62c5c6df78d385e06ceaf304cba2c5..230e6a96c14468b0b1bd738bf5e1b23c56b5daa2 100644
--- a/src/net/listen.c
+++ b/src/net/listen.c
@@ -223,13 +223,11 @@ handle_simple_command(struct lkt_state *srv, size_t c, struct lkt_command cmd)
             err = !command_help(srv, c);
 
         else if (STR_MATCH(cmd.name, "__insert"))
-            err = !command_add((sqlite3 *) srv->db, &srv->win, cmd.args, &srv->mpd_idle_events, 5);
+            err = ! command_add((sqlite3 *) srv->db, &srv->win, cmd.args, &srv->mpd_idle_events, 5);
         else if (STR_MATCH(cmd.name, "searchadd") || STR_MATCH(cmd.name, "findadd") || STR_MATCH(cmd.name, "add"))
-            err = !command_add((sqlite3 *) srv->db, &srv->win, cmd.args, &srv->mpd_idle_events, 1);
+            err = ! command_add((sqlite3 *) srv->db, &srv->win, cmd.args, &srv->mpd_idle_events, 1);
         else if (STR_MATCH(cmd.name, "addid"))
-            err = !command_addid((sqlite3 *) srv->db, &srv->win, cmd.args, &srv->mpd_idle_events);
-        else if (STR_MATCH(cmd.name, "multiaddid"))
-            err = !command_multiaddid((sqlite3 *) srv->db, &srv->win, cmd.args, &srv->mpd_idle_events);
+            err = ! command_addid((sqlite3 *) srv->db, &srv->win, cmd.args, &srv->mpd_idle_events);
         else if (STR_MATCH(cmd.name, "deleteid"))
             err = ! (cmd.args[0] != NULL &&
                      command_delid((sqlite3 *) srv->db, &srv->win, cmd.args[0], &srv->mpd_idle_events));