diff --git a/inc/lektor/database.h b/inc/lektor/database.h
index 41ef160a072bab994fb540efb9f2548139f68f8c..cd8c6c93af0836e01aae049c0f3cc9458c0864b6 100644
--- a/inc/lektor/database.h
+++ b/inc/lektor/database.h
@@ -86,8 +86,7 @@ bool database_queue_list_abs(sqlite3 *db, unsigned int from, unsigned int to, st
 
 /* Search the database */
 bool database_search_queue_init(sqlite3 *db, char *col_name, char *rgx, sqlite3_stmt **ret);
-bool database_search_iter(sqlite3 *db, sqlite3_stmt *item, void *args,
-                          struct lkt_callback callback, bool *need_free);
+bool database_search_iter(sqlite3 *db, sqlite3_stmt *item, struct lkt_callback *callback, bool *need_free);
 
 /* Next and prev operation on the queue. */
 bool database_queue_next(sqlite3 *db, char filepath[PATH_MAX]);
diff --git a/src/commands.c b/src/commands.c
index 11b8f1f45c35d6c86bbf47cc69fd3163cc7e46ea..d7de4629c6e8e9049b56f5e962b69e974cc47082 100644
--- a/src/commands.c
+++ b/src/commands.c
@@ -524,7 +524,7 @@ command_noidle(struct lkt_state *srv, size_t c)
 static bool
 lkt_callback_print_row_v1(void *args, int id, int id_len, const char *sql_row)
 {
-    printf(" . from client %ld:\t%*d:%s\n", ((struct _client_trace_t *) args)->c,
+    printf(" . from client %ld:\t%*d:%s\n", ((struct lkt_callback *) args)->c,
            id_len, id, sql_row);
     return true;
 }
@@ -532,7 +532,7 @@ lkt_callback_print_row_v1(void *args, int id, int id_len, const char *sql_row)
 static bool
 lkt_callback_send_row_v1(void *_args, int id, int id_len, const char *sql_row)
 {
-    struct _client_trace_t *args = (struct _client_trace_t *) _args;
+    struct lkt_callback *args = (struct lkt_callback *) _args;
     struct lkt_message *out;
 
     out = lkt_message_new();
@@ -546,7 +546,7 @@ lkt_callback_insert_v1(void *_args, int id, int id_len, const char *sql_row)
 {
     (void) sql_row;
     (void) id_len;
-    struct _client_trace_t *args = (struct _client_trace_t *) _args;
+    struct lkt_callback *args = (struct lkt_callback *) _args;
     return database_queue_add_id(args->srv->db, id, 5);
 }
 
@@ -559,9 +559,8 @@ command_find(struct lkt_state *srv,
     sqlite3_stmt *stmt;
     char rgx[PATH_MAX], *col_name, *mpd_tag;
     bool once, free_stmt;
-    struct _client_trace_t args;
     struct lkt_message *not_found_msg;
-    struct lkt_callback callback;
+    struct lkt_callback callback = { .srv = srv, .c = c };
 
     // Check args //
     if (cmd_args == NULL || cmd_args[0] == NULL) {
@@ -573,8 +572,6 @@ command_find(struct lkt_state *srv,
     switch (action) {
     case LKT_FND_ACT_RESPOND:
         callback.call = lkt_callback_send_row_v1;
-        args.srv = srv;
-        args.c = c;
         break;
     case LKT_FND_ACT_PRINT:
         callback.call = lkt_callback_print_row_v1;
@@ -582,8 +579,6 @@ command_find(struct lkt_state *srv,
     case LKT_FND_ACT_ENQUEUE:
         callback.call = lkt_callback_insert_v1;
         srv->mpd_idle_events |= MPD_IDLE_PLAYLIST;
-        args.srv = srv;
-        args.c = c;
         break;
     case LKT_FND_ACT_NONE:
     default:
@@ -631,7 +626,7 @@ command_find(struct lkt_state *srv,
         return false;
     }
 
-    for (once = false; database_search_iter(srv->db, stmt, &args, callback, &free_stmt); once |= true)
+    for (once = false; database_search_iter(srv->db, stmt, &callback, &free_stmt); once |= true)
         continue;
 
     // End //
diff --git a/src/database/find.c b/src/database/find.c
index cdccbb42f26eb833ff1e501338ae4c56ece9ba50..22f60e0a4940abc7acf725be78be05dc300ecf7d 100644
--- a/src/database/find.c
+++ b/src/database/find.c
@@ -35,7 +35,7 @@ error:
 }
 
 bool
-database_search_iter(sqlite3 *db, sqlite3_stmt *item, void *args, struct lkt_callback callback,
+database_search_iter(sqlite3 *db, sqlite3_stmt *item, struct lkt_callback *callback,
                      bool *need_free)
 {
     const char *sql_row;
@@ -56,7 +56,7 @@ database_search_iter(sqlite3 *db, sqlite3_stmt *item, void *args, struct lkt_cal
         id = sqlite3_column_int(item, 0);
         sql_row = (const char *) sqlite3_column_text(item, 1);
         id_len = sqlite3_column_int(item, 2);
-        return callback.call(args, id, id_len, sql_row);
+        return callback->call(callback, id, id_len, sql_row);
     }
 
     fprintf(stderr, " ! database_search_iter: sqlite3_step failed: %s\n", sqlite3_errmsg(db));