diff --git a/src/core/js/ext_bookmarks.js b/src/core/js/ext_bookmarks.js
index 4685d44ded90d6a68c31533c696ad1bfa6799dc2..29173e63da4f3f0d056e15d7ef25645fa1613c20 100644
--- a/src/core/js/ext_bookmarks.js
+++ b/src/core/js/ext_bookmarks.js
@@ -574,10 +574,8 @@ var ext_bookmarks = function ($, logger, config) {
         if ($("#" + row_id).length > 0) {
             return;
         }
-        const button_html = $(`<div class="row" id=${row_id}>
-    <p class="text-end">
+        const button_html = $(`<div class="text-end" id=${row_id}>
         <button class="btn btn-link" onclick="ext_bookmarks.add_query_results_to_bookmarks();">Bookmark all query results</button>
-    </p>
 </div>`)[0];
 
         // Add to query results box
@@ -590,17 +588,19 @@ var ext_bookmarks = function ($, logger, config) {
     const add_query_results_to_bookmarks = async function () {
 
         const query_string = get_query_from_response();
-        const waiting_id = "caosdb-add-to-bookamrks-waiting-notification";
         const waiting_notification = createWaitingNotification(
-            "Adding results to bookmarks.  Please wait and do not reload the page.", id = waiting_id);
-        $("#caosdb-add-query-to-bookmarks-row").append(waiting_notification);
+            "Adding results to bookmarks. Please wait and do not reload the page.");
+        const bookmarks_row = $("#caosdb-add-query-to-bookmarks-row");
+        bookmarks_row.find("button").hide();
+        bookmarks_row.append(waiting_notification);
         const resp = await query(query_string);
         for (const eid of resp) {
             bookmark_storage.setItem(get_key(getEntityID(eid)), getEntityID(eid));
         }
         // re-init for correct display of counter and entities on page
         init();
-        $("#" + waiting_id).remove();
+        removeAllWaitingNotifications(bookmarks_row);
+        bookmarks_row.find("button").prop("disabled", true).show();
     }
 
     /**
@@ -618,7 +618,7 @@ var ext_bookmarks = function ($, logger, config) {
             return select_string + query_string.slice(query_string.indexOf(" ") + 1);
         }
         if (test_string.startsWith("select")) {
-            return select_string + query_string.slice(query_string.indexOf("FROM ") + 5);
+            return select_string + query_string.slice(test_string.indexOf("from ") + 5);
         }
     }
 
@@ -628,7 +628,7 @@ var ext_bookmarks = function ($, logger, config) {
     const get_query_from_response = function () {
 
         const orig_query = $(".caosdb-query-response-string")[0].innerText;
-        return get_select_id_query_string(orig_query);
+        return get_select_id_query_string(orig_query.trim());
     }
 
     /**
@@ -798,4 +798,4 @@ $(document).ready(function () {
         ext_bookmarks = ext_bookmarks($, log.getLogger("ext_bookmarks"), config);
         caosdb_modules.register(ext_bookmarks);
     }
-});
+});
\ No newline at end of file
diff --git a/src/core/js/webcaosdb.js b/src/core/js/webcaosdb.js
index 87a63ed5da002e1f74e4c546d025c771017eccd1..efa28c9b39921df3e02a25ec95d4601f752fa288 100644
--- a/src/core/js/webcaosdb.js
+++ b/src/core/js/webcaosdb.js
@@ -607,7 +607,7 @@ this.transformation = new function () {
      * @return {XMLDocument} xslt script
      */
     this.retrieveEntityXsl = async function _rEX(root_template) {
-        const _root = root_template || '<xsl:template match="/" xmlns="http://www.w3.org/1999/xhtml"><div class="root"><xsl:apply-templates select="Response/*" mode="entities"/></div></xsl:template>';
+        const _root = root_template || '<xsl:template match="/" xmlns="http://www.w3.org/1999/xhtml"><div class="root"><xsl:apply-templates select="Response/child::*" mode="entities"/></div></xsl:template>';
         var entityXsl = await transformation.retrieveXsltScript("entity.xsl");
         var commonXsl = await transformation.retrieveXsltScript("common.xsl");
         var errorXsl = await transformation.retrieveXsltScript('messages.xsl');
@@ -1313,7 +1313,7 @@ var queryForm = new function () {
         var submithandler = function () {
             // store current query
             var queryField = form.query;
-            var value = queryField.value.toUpperCase();
+            var value = queryField.value.toUpperCase().trim();
             if (typeof value == "undefined" || value.length == 0) {
                 return;
             }
@@ -1327,7 +1327,7 @@ var queryForm = new function () {
                 paging = form.P.value
             }
 
-            queryForm.redirect(queryField.value, paging);
+            queryForm.redirect(queryField.value.trim(), paging);
         };
 
         $("#caosdb-query-textarea").on("keydown", (e) => {
@@ -1510,8 +1510,9 @@ function createErrorNotification(msg) {
  * @param {String} id, optional, the id of the message div.  Default is empty
  * @return {HTMLElement} A div with class `caosdb-preview-waiting-notification`.
  */
-function createWaitingNotification(info, id = "") {
-    return $('<div class="' + globalClassNames.WaitingNotification + '" id="' + id + '">' + info + '</div>')[0];
+function createWaitingNotification(info, id) {
+    id = id ? `id="${id}"` : "";
+    return $(`<div class="${globalClassNames.WaitingNotification}" ${id}>${info}</div>`)[0];
 }
 
 /**
@@ -1521,7 +1522,7 @@ function createWaitingNotification(info, id = "") {
  * @return {HTMLElement} The parameter `elem`.
  */
 function removeAllWaitingNotifications(elem) {
-    $(elem.getElementsByClassName(globalClassNames.WaitingNotification)).remove();
+    $(elem).find(`.${globalClassNames.WaitingNotification}`).remove();
     return elem;
 }
 
@@ -1926,4 +1927,4 @@ class _CaosDBModules {
 
 var caosdb_modules = new _CaosDBModules()
 
-$(document).ready(initOnDocumentReady);
+$(document).ready(initOnDocumentReady);
\ No newline at end of file
diff --git a/src/core/xsl/entity.xsl b/src/core/xsl/entity.xsl
index d562bf99f7611b976e10d5349d0c99972d6d8fdd..92f08ea70645a8282f97f364c9fc4143f37afd6a 100644
--- a/src/core/xsl/entity.xsl
+++ b/src/core/xsl/entity.xsl
@@ -25,6 +25,10 @@
   <xsl:output method="html"/>
   <!-- These little colored Rs, RTs, Ps, and Fs which hilite the beginning 
         of a new entity. -->
+  <xsl:template match="Entity" mode="entity-heading-label">
+    <span class="badge caosdb-f-entity-role caosdb-label-entity me-1"
+    title="This is an entity. The role is not specified.">E</span>
+  </xsl:template>
   <xsl:template match="Property" mode="entity-heading-label">
     <span class="badge caosdb-f-entity-role caosdb-label-property me-1"
     data-entity-role="Property" title="This entity is a Property.">P</span>
@@ -98,7 +102,7 @@
     </div>
   </xsl:template>
   <!-- Main entry for ENTITIES -->
-  <xsl:template match="Property|Record|RecordType|File" mode="entities">
+  <xsl:template match="Property|Record|RecordType|File|Response/Entity" mode="entities">
     <div class="card caosdb-entity-panel mb-2">
       <xsl:apply-templates select="Version" mode="entity-version-marker"/>
       <xsl:attribute name="id">