diff --git a/src/commands.c b/src/commands.c
index 3ac24119993f1f56208f4f91025ffaef2283dcb8..64aa02c716aa9160fcba5363cc48a234358d5103 100644
--- a/src/commands.c
+++ b/src/commands.c
@@ -871,27 +871,49 @@ command_plt_rename(sqlite3 *db, char *args[LKT_MESSAGE_ARGS_MAX], long long int
 bool
 command_plt_export(sqlite3 *db, char *args[LKT_MESSAGE_ARGS_MAX], long long int *watch_mask_ptr)
 {
+    int ret = false;
+
     if (args == NULL || args[0] == NULL || args[1] == NULL)
         return false;
 
-    // if (database_plt_export(db, args[0], args[1])) {
-    //     *watch_mask_ptr |= MPD_IDLE_PLAYLIST;
-    //     return true;
-    // } else
-    //     return false;
+    if (!database_attach(db, args[0], args[1]))
+        goto error;
+
+    if (!database_plt_export(db, args[0]))
+        goto error;
+
+    if (!database_detach(db, args[0]))
+        goto error;
+
+    fprintf(stderr, " * Exported playlist %s with path '%s'\n", args[0], args[1]);
+    *watch_mask_ptr |= MPD_IDLE_PLAYLIST;
+    ret = true;
+error:
+    return ret;
 }
 
 bool
 command_plt_import(sqlite3 *db, char *args[LKT_MESSAGE_ARGS_MAX], long long int *watch_mask_ptr)
 {
+    int ret = false;
+
     if (args == NULL || args[0] == NULL || args[1] == NULL)
         return false;
 
-    // if (database_plt_import(db, args[0], args[1])) {
-    //     *watch_mask_ptr |= MPD_IDLE_PLAYLIST;
-    //     return true;
-    // } else
-    //     return false;
+    if (!database_attach(db, args[0], args[1]))
+        goto error;
+
+    if (!database_plt_import(db, args[0]))
+        goto error;
+
+    if (!database_detach(db, args[0]))
+        goto error;
+
+    fprintf(stderr, " * Imported playlist %s with path '%s'\n", args[0], args[1]);
+    *watch_mask_ptr |= MPD_IDLE_PLAYLIST;
+    ret = true;
+error:
+    return ret;
 }
 
 bool
diff --git a/src/net/listen.c b/src/net/listen.c
index c2bda8accbaadffe95388f57770524a4fbe4cd3b..cade02db046d9f3d707a630feecfe0e5dda06667 100644
--- a/src/net/listen.c
+++ b/src/net/listen.c
@@ -212,6 +212,10 @@ handle_simple_command(struct lkt_state *srv, size_t c, struct lkt_command cmd)
             err = ! command_plt_add(srv->db, cmd.args, &srv->mpd_idle_events);
         else if (!strcmp(cmd.name, "rm") && cmd.args[0] != NULL && cmd.args[1] == NULL)
             err = ! command_plt_remove(srv->db, cmd.args, &srv->mpd_idle_events);
+        else if (!strcmp(cmd.name, "save"))
+            err = ! command_plt_export(srv->db, cmd.args, &srv->mpd_idle_events);
+        else if (!strcmp(cmd.name, "__import"))
+            err = ! command_plt_import(srv->db, cmd.args, &srv->mpd_idle_events);
 
         else if (!strcmp(cmd.name, "random"))
             err = !command_set_playback_option(srv, c, lkt_playback_option_random, cmd.args);