diff --git a/common/db.js b/common/db.js
index 1e795a30bbb803435a1809d45fc93dc15d7944e0..138ae129e5eb27f572125c38f6d7fe0ff6fd415c 100644
--- a/common/db.js
+++ b/common/db.js
@@ -123,6 +123,42 @@ class KaraDatabase {
         return __getRecords(this.m_db);
     }
 
+    /* List all the next karas in the queue.
+     * => a promize, callback with [(id: Int, string, cat, type, language,
+     *    author, title, source, position: Int)] */
+    queueAll() {
+        var __ret = [];
+        let __sqlQuery = `WITH content AS (
+             SELECT kara.id AS id, string,
+                    category AS cat,
+                    (song_type || song_number) AS type,
+                    language, author_name AS author,
+                    song_name AS title, source_name AS source,
+                    position
+              FROM queue
+              JOIN kara ON kara_id = kara.id
+              GROUP BY position ORDER BY position ASC, priority DESC)
+        SELECT id, string, position, cat, type, language, author, source, title
+        FROM content;`;
+
+        function __getRecords(db) {
+            return new Promise(resolv => {
+                db.all(__sqlQuery, [], (err, rows) => {
+                    if (err) {
+                        logger.error('db', err);
+                        throw err;
+                    }
+                    rows.forEach(row => {
+                        __ret.push(row);
+                    });
+                    resolv(__ret);
+                });
+            });
+        }
+
+        return __getRecords(this.m_db);
+    }
+
     /* List all the next karas in the queue.
      * -  first: Integer => the first kara to consider being in the queue (the
      *    current one, starts ad 0)
diff --git a/instance/main.js b/instance/main.js
index 14b697536d9171f7ecfa072e4e6614528413940a..c0f47c35292fe83fdeb8b3eb2370aac0601ec9cf 100644
--- a/instance/main.js
+++ b/instance/main.js
@@ -94,8 +94,9 @@ window.onload = () => {
     $('#filterInput').on('keypress', e => {
         /* On 'Return'. */
         if (e.which != 13) return;
+        logger.debug('instance', `Send filter for: ${$('#filterInput').val()}`);
         ipcRenderer.send('reload-db-request', {
-            search: $('#filterInput').val(),
+            search: `${$('#filterInput').val()}`,
         });
     });
 
@@ -188,9 +189,7 @@ ipcRenderer.on('reload-db-responce', (event, arg) => {
     arg.forEach(kara => {
         ejs.renderFile(__dirname + '/views/karaDBListItem.ejs', { kara: kara }, (err, data) => {
             if (err) logger.error('instance', err);
-            document.getElementById('panelLeft').innerHTML = `
-                ${document.getElementById('panelLeft').innerHTML}
-                ${data}`;
+            $('#panelLeft').append(data);
         });
     });
     [].forEach.call(document.querySelectorAll('#panelLeft .karaCard'), addDBKaraEventHandlers);
@@ -205,9 +204,7 @@ ipcRenderer.on('reload-queue-responce', (event, arg) => {
         countKaraInQueue++;
         ejs.renderFile(__dirname + '/views/karaQueueListItem.ejs', { kara: kara }, (err, data) => {
             if (err) logger.error('instance', err);
-            document.getElementById('panelRight').innerHTML = `
-                ${document.getElementById('panelRight').innerHTML}
-                ${data}`;
+            $('#panelRight').append(data);
         });
     });
     [].forEach.call(document.querySelectorAll('#panelRight .karaCard'), addQueueKaraEventHandlers);
diff --git a/main.js b/main.js
index a6966b581e9d585a6894d3eb07a833fb74af5209..563c60680b6816f13559e8424d03fef14dfd8aee 100644
--- a/main.js
+++ b/main.js
@@ -197,6 +197,9 @@ ipcMain.on('toggle-client-view', (event, arg) => {
  * Messages from the main window *
  *********************************/
 
+var songTimeData = { elapsed: 0, total: 100, state: 'stop', song: '0' };
+var counterTime = 0;
+
 ipcMain.on('cmd-play', (event, arg) => {
     lkt.commandPlay().then(arg => {
         logger.debug('main', 'Returned from cmd-play');
@@ -220,20 +223,20 @@ ipcMain.on('reload-db-request', (event, arg) => {
     var callback = karas => {
         event.reply('reload-db-responce', karas);
     };
-    if (arg && arg.search) {
+    if (arg && (arg.search || arg.search == '')) {
         __lastFilter = arg.search;
         logger.debug('main', `Reload DB with search '${arg}'`);
-        db.search(__lastFilter, 0, 15).then(callback);
+        db.search(__lastFilter, 0, 100).then(callback);
     } else {
         logger.debug('main', `Reload DB with last filter '${__lastFilter}'`);
-        db.search(__lastFilter, 0, 15).then(callback);
+        db.search(__lastFilter, 0, 100).then(callback);
     }
 });
 
 /* Send the queue to the webpage when asked to */
 ipcMain.on('reload-queue-request', (event, arg) => {
     logger.info('main', 'Reloading next karas in queue');
-    db.queue(0, 100).then(karas => {
+    db.queueAll().then(karas => {
         event.reply('reload-queue-responce', karas);
     });
 });
@@ -241,7 +244,7 @@ ipcMain.on('reload-queue-request', (event, arg) => {
 ipcMain.on('verify-queue-reloaded-request', (event, arg) => {
     if (lkt.isQueueUpdated()) {
         lkt.setQueueUpdated(false);
-        db.queue(0, 100).then(karas => {
+        db.queueAll().then(karas => {
             event.reply('reload-queue-responce', karas);
         });
     }
@@ -273,8 +276,6 @@ ipcMain.on('add-kara-queue-pos', (event, addparams) => {
     lkt.commandQueueAddId(addparams.id).then(() => lkt.commandMove(addparams.queueSize + 1, addparams.position));
 });
 
-var songTimeData = { elapsed: 0, total: 100, state: 'stop', song: '0' };
-var counterTime = 0;
 ipcMain.on('get-song-time-data', (event, arg) => {
     var newSongTimeData = lkt.getSongTimeData();
     if (newSongTimeData.elapsed != songTimeData.elapsed || newSongTimeData.song != songTimeData.song) {