diff --git a/inc/lektor/uri.h b/inc/lektor/uri.h
index e9bc81c2a24de53542b0a1aeb624dfb9dc5be9e2..caf9342595517146ef32e9ae22a4c69c93dce474 100644
--- a/inc/lektor/uri.h
+++ b/inc/lektor/uri.h
@@ -16,13 +16,17 @@ enum lkt_uri_type {
 
 struct lkt_uri {
     enum lkt_uri_type type;
-    void *value;
+    union {
+        void *value;
+        size_t id;
+    };
 
     bool _allocated;
 };
 
 /* Create and delete URIs */
 bool lkt_uri_from(struct lkt_uri *ret, char *const str);
+bool lkt_uri_from_list(struct lkt_uri *ret, char **list);
 void lkt_uri_free(struct lkt_uri *ret);
 
 /* Make an URL to download from kurisu.
diff --git a/src/commands.c b/src/commands.c
index 9b25a076a3e931fb1bbea1413f4ad677fee17366..7d155a86dba2be377f521bdd9d3d732573a6d3e0 100644
--- a/src/commands.c
+++ b/src/commands.c
@@ -267,13 +267,11 @@ command_addid(volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_
 {
     UNUSED(win);
     RETURN_UNLESS(args, "Invalid argument", false);
-    long id;
     char *endptr = NULL, err = 0;
     struct lkt_uri uri = { .type = uri_id };
     *watch_mask_ptr |= MPD_IDLE_PLAYLIST;
-    STRTOL(id, args[0], endptr, err);
+    STRTOL(uri.id, args[0], endptr, err);
     RETURN_IF(err, "STRTOL failed", false);
-    uri.value = (void *) (size_t) id;
     return database_queue_add_uri(db, &uri, 1);
 }
 
diff --git a/src/database/queue.c b/src/database/queue.c
index e421ea06f2d080c3583e6f3b51200323568d711c..d59484b986b9519945be9ed79f3bb092e33077c6 100644
--- a/src/database/queue.c
+++ b/src/database/queue.c
@@ -265,7 +265,7 @@ database_queue_add_uri(volatile sqlite3 *db, struct lkt_uri *uri, int priority)
         return queue_add_with_col_like_str(db, LKT_DATABASE_KARA_ALL,
                                            uri->value, priority);
     case uri_id:
-        return database_queue_add_id(db, *(int *) uri->value, priority);
+        return database_queue_add_id(db, uri->id, priority);
     case uri_type:
         return queue_add_with_col_like_str(db, LKT_DATABASE_NAME_KTYPE,
                                            uri->value, priority);