Index: src/org/openstreetmap/josm/actions/OverpassDownloadAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/OverpassDownloadAction.java	(revision 12597)
+++ src/org/openstreetmap/josm/actions/OverpassDownloadAction.java	(working copy)
@@ -7,6 +7,7 @@
 import java.awt.BorderLayout;
 import java.awt.Component;
 import java.awt.Dimension;
+import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.FocusEvent;
 import java.awt.event.FocusListener;
@@ -24,6 +25,8 @@
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
 import javax.swing.plaf.basic.BasicArrowButton;
 
 import org.openstreetmap.josm.Main;
@@ -39,6 +42,7 @@
 import org.openstreetmap.josm.gui.widgets.JosmTextArea;
 import org.openstreetmap.josm.io.OverpassDownloadReader;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -157,6 +161,7 @@
         private static OverpassDownloadDialog instance;
         private static final BooleanProperty OVERPASS_QUERY_LIST_OPENED =
                 new BooleanProperty("download.overpass.query-list.opened", false);
+        private static final String ACTION_IMG_SUBDIR = "dialogs";
 
         private OverpassDownloadDialog(Component parent) {
             super(parent, ht("/Action/OverpassDownload"));
@@ -176,9 +181,6 @@
 
         @Override
         protected void buildMainPanelAboveDownloadSelections(JPanel pnl) {
-            // needed for the invisible checkboxes cbDownloadGpxData, cbDownloadNotes
-            pnl.add(new JLabel(), GBC.eol());
-
             DisableActionsFocusListener disableActionsFocusListener =
                     new DisableActionsFocusListener(slippyMapChooser.getNavigationComponentActionMap());
 
@@ -190,10 +192,14 @@
                 }
             };
 
-            JButton openQueryWizard = new JButton("Query Wizard");
+            JButton openQueryWizard = new JButton(tr("Query Wizard"));
             openQueryWizard.setToolTipText(tooltip);
             openQueryWizard.addActionListener(queryWizardAction);
 
+            // use eol() that is needed for the invisible checkboxes cbDownloadGpxData, cbDownloadNotes
+            pnl.add(openQueryWizard, GBC.eol());
+            pnl.add(new JLabel(tr("Overpass query:")), GBC.std().insets(5, 5, 0, 0).anchor(GBC.NORTHWEST));
+
             // CHECKSTYLE.OFF: LineLength
             this.overpassQuery = new JosmTextArea(
                     "/*\n" +
@@ -215,23 +221,37 @@
                 }
             });
 
+
             this.overpassQueryList = new OverpassQueryList(this, this.overpassQuery);
-            overpassQueryList.setToolTipText(tr("Show/hide Overpass snippet list"));
-            overpassQueryList.setVisible(OVERPASS_QUERY_LIST_OPENED.get());
-            overpassQueryList.setPreferredSize(new Dimension(350, 300));
+            this.overpassQueryList.setPreferredSize(new Dimension(350, 300));
+
+            EditSnippetAction edit = new EditSnippetAction();
+            RemoveSnippetAction remove = new RemoveSnippetAction();
+            this.overpassQueryList.addSelectionListener(edit);
+            this.overpassQueryList.addSelectionListener(remove);
+
+            JPanel listPanel = new JPanel(new GridBagLayout());
+            listPanel.add(new JLabel(tr("Your saved queries:")), GBC.eol().insets(2).anchor(GBC.CENTER));
+            listPanel.add(this.overpassQueryList, GBC.eol().fill(GBC.BOTH));
+            listPanel.add(new JButton(new AddSnippetAction()), GBC.std().fill(GBC.HORIZONTAL));
+            listPanel.add(new JButton(edit), GBC.std().fill(GBC.HORIZONTAL));
+            listPanel.add(new JButton(remove), GBC.std().fill(GBC.HORIZONTAL));
+            listPanel.setVisible(OVERPASS_QUERY_LIST_OPENED.get());
+
             JScrollPane scrollPane = new JScrollPane(overpassQuery);
-            BasicArrowButton arrowButton = new BasicArrowButton(overpassQueryList.isVisible()
+            BasicArrowButton arrowButton = new BasicArrowButton(listPanel.isVisible()
                 ? BasicArrowButton.EAST
                 : BasicArrowButton.WEST);
+            arrowButton.setToolTipText(tr("Show/hide Overpass snippet list"));
             arrowButton.addActionListener(e -> {
-                if (overpassQueryList.isVisible()) {
-                    overpassQueryList.setVisible(false);
+                if (listPanel.isVisible()) {
+                    listPanel.setVisible(false);
                     arrowButton.setDirection(BasicArrowButton.WEST);
                     OVERPASS_QUERY_LIST_OPENED.put(Boolean.FALSE);
                 } else {
-                    overpassQueryList.setVisible(true);
+                    listPanel.setVisible(true);
                     arrowButton.setDirection(BasicArrowButton.EAST);
-                    OVERPASS_QUERY_LIST_OPENED.put(Boolean.FALSE);
+                    OVERPASS_QUERY_LIST_OPENED.put(Boolean.TRUE);
                 }
             });
 
@@ -241,14 +261,13 @@
 
             JPanel pane = new JPanel(new BorderLayout());
             pane.add(innerPanel, BorderLayout.CENTER);
-            pane.add(overpassQueryList, BorderLayout.EAST);
+            pane.add(listPanel, BorderLayout.EAST);
 
             GBC gbc = GBC.eol().fill(GBC.HORIZONTAL); gbc.ipady = 200;
-            pnl.add(openQueryWizard, GBC.std().insets(5, 5, 5, 5));
             pnl.add(pane, gbc);
         }
 
-        String getOverpassQuery() {
+        public String getOverpassQuery() {
             return overpassQuery.getText();
         }
 
@@ -280,5 +299,91 @@
         public void triggerDownload() {
             super.btnDownload.doClick();
         }
+
+        /**
+         * Action that delegates snippet creation to {@link OverpassQueryList#createNewItem()}.
+         */
+        class AddSnippetAction extends AbstractAction {
+
+            /**
+             * Constructs a new {@code AddSnippetAction}.
+             */
+            AddSnippetAction() {
+                super();
+                putValue(SMALL_ICON, ImageProvider.get(ACTION_IMG_SUBDIR, "add"));
+                putValue(SHORT_DESCRIPTION, tr("Add new snippet"));
+            }
+
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                overpassQueryList.createNewItem();
+            }
+        }
+
+        /**
+         * Action that delegates snippet removal to {@link OverpassQueryList#removeSelectedItem()}.
+         */
+        class RemoveSnippetAction extends AbstractAction implements ListSelectionListener {
+
+            /**
+             * Constructs a new {@code RemoveSnippetAction}.
+             */
+            RemoveSnippetAction() {
+                super();
+                putValue(SMALL_ICON, ImageProvider.get(ACTION_IMG_SUBDIR, "delete"));
+                putValue(SHORT_DESCRIPTION, tr("Delete selected snippet"));
+                checkEnabled();
+            }
+
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                overpassQueryList.removeSelectedItem();
+            }
+
+            /**
+             * Disables the action if no items are selected.
+             */
+            void checkEnabled() {
+                setEnabled(overpassQueryList.getSelectedItem().isPresent());
+            }
+
+            @Override
+            public void valueChanged(ListSelectionEvent e) {
+                checkEnabled();
+            }
+        }
+
+        /**
+         * Action that delegates snippet edit to {@link OverpassQueryList#editSelectedItem()}.
+         */
+        class EditSnippetAction extends AbstractAction implements ListSelectionListener {
+
+            /**
+             * Constructs a new {@code EditSnippetAction}.
+             */
+            EditSnippetAction() {
+                super();
+                putValue(SMALL_ICON, ImageProvider.get(ACTION_IMG_SUBDIR, "edit"));
+                putValue(SHORT_DESCRIPTION, tr("Edit selected snippet"));
+                checkEnabled();
+            }
+
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                overpassQueryList.editSelectedItem();
+            }
+
+            /**
+             * Disables the action if no items are selected.
+             */
+            void checkEnabled() {
+                setEnabled(overpassQueryList.getSelectedItem().isPresent());
+            }
+
+            @Override
+            public void valueChanged(ListSelectionEvent e) {
+                checkEnabled();
+            }
+        }
     }
 }
Index: src/org/openstreetmap/josm/actions/downloadtasks/PostDownloadHandler.java
===================================================================
--- src/org/openstreetmap/josm/actions/downloadtasks/PostDownloadHandler.java	(revision 12597)
+++ src/org/openstreetmap/josm/actions/downloadtasks/PostDownloadHandler.java	(working copy)
@@ -19,6 +19,7 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
 import org.openstreetmap.josm.gui.Notification;
+import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.ExceptionUtil;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -67,8 +68,9 @@
         // make sure errors are reported only once
         //
         Set<Object> errors = new LinkedHashSet<>(task.getErrorObjects());
+
         if (this.errorReporter != null) {
-            errorReporter.accept(errors);
+            GuiHelper.runInEDT(() -> errorReporter.accept(errors));
         }
 
         if (errors.isEmpty()) {
Index: src/org/openstreetmap/josm/gui/download/OverpassQueryList.java
===================================================================
--- src/org/openstreetmap/josm/gui/download/OverpassQueryList.java	(revision 12597)
+++ src/org/openstreetmap/josm/gui/download/OverpassQueryList.java	(working copy)
@@ -15,10 +15,12 @@
 import java.awt.event.MouseEvent;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Objects;
@@ -73,9 +75,11 @@
      */
     private static final String KEY_KEY = "key";
     private static final String QUERY_KEY = "query";
-    private static final String USE_COUNT_KEY = "useCount";
+    private static final String LAST_EDIT_KEY = "lastEdit";
     private static final String PREFERENCE_ITEMS = "download.overpass.query";
 
+    private static final String TRANSLATED_HISTORY = tr("history");
+
     /**
      * Constructs a new {@code OverpassQueryList}.
      * @param parent The parent of this component.
@@ -102,17 +106,12 @@
      */
     public synchronized Optional<SelectorItem> getSelectedItem() {
         int idx = lsResult.getSelectedIndex();
-        if (lsResultModel.getSize() == 0 || idx == -1) {
+        if (lsResultModel.getSize() <= idx || idx == -1) {
             return Optional.empty();
         }
 
         SelectorItem item = lsResultModel.getElementAt(idx);
-        item.increaseUsageCount();
 
-        this.items.values().stream()
-                .filter(it -> !it.getKey().equals(item.getKey()))
-                .forEach(SelectorItem::decreaseUsageCount);
-
         filterItems();
 
         return Optional.of(item);
@@ -127,14 +126,12 @@
      */
     public synchronized void saveHistoricItem(String query) {
         boolean historicExist = this.items.values().stream()
-                .filter(it -> it.getKey().contains("history"))
                 .map(SelectorItem::getQuery)
                 .anyMatch(q -> q.equals(query));
 
         if (!historicExist) {
             SelectorItem item = new SelectorItem(
-                    "history " + LocalDateTime.now().format(FORMAT),
-                    query);
+                    TRANSLATED_HISTORY + " " + LocalDateTime.now().format(FORMAT), query);
 
             this.items.put(item.getKey(), item);
 
@@ -147,7 +144,7 @@
      * Removes currently selected item, saves the current state to preferences and
      * updates the view.
      */
-    private synchronized void removeSelectedItem() {
+    public synchronized void removeSelectedItem() {
         Optional<SelectorItem> it = this.getSelectedItem();
 
         if (!it.isPresent()) {
@@ -159,6 +156,7 @@
 
         SelectorItem item = it.get();
         if (this.items.remove(item.getKey(), item)) {
+            clearSelection();
             savePreferences();
             filterItems();
         }
@@ -168,7 +166,7 @@
      * Opens {@link EditItemDialog} for the selected item, saves the current state
      * to preferences and updates the view.
      */
-    private synchronized void editSelectedItem() {
+    public synchronized void editSelectedItem() {
         Optional<SelectorItem> it = this.getSelectedItem();
 
         if (!it.isPresent()) {
@@ -184,7 +182,7 @@
                 componentParent,
                 tr("Edit item"),
                 item,
-                tr("Save"));
+                tr("Save"), tr("Cancel"));
         dialog.showDialog();
 
         Optional<SelectorItem> editedItem = dialog.getOutputItem();
@@ -201,13 +199,13 @@
      * Opens {@link EditItemDialog}, saves the state to preferences if a new item is added
      * and updates the view.
      */
-    private synchronized void createNewItem() {
+    public synchronized void createNewItem() {
         EditItemDialog dialog = new EditItemDialog(componentParent, tr("Add snippet"), tr("Add"));
         dialog.showDialog();
 
         Optional<SelectorItem> newItem = dialog.getOutputItem();
         newItem.ifPresent(i -> {
-            items.put(i.getKey(), new SelectorItem(i.getKey(), i.getQuery()));
+            items.put(i.getKey(), i);
             savePreferences();
             filterItems();
         });
@@ -221,10 +219,12 @@
     @Override
     protected void filterItems() {
         String text = edSearchText.getText().toLowerCase(Locale.ENGLISH);
-
-        super.lsResultModel.setItems(this.items.values().stream()
+        List<SelectorItem> matchingItems = this.items.values().stream()
+                .sorted((i1, i2) -> i2.getLastEdit().compareTo(i1.getLastEdit()))
                 .filter(item -> item.getKey().contains(text))
-                .collect(Collectors.toList()));
+                .collect(Collectors.toList());
+        
+        super.lsResultModel.setItems(matchingItems);
     }
 
     private void doubleClickEvent() {
@@ -247,7 +247,7 @@
             Map<String, String> it = new HashMap<>();
             it.put(KEY_KEY, item.getKey());
             it.put(QUERY_KEY, item.getQuery());
-            it.put(USE_COUNT_KEY, Integer.toString(item.getUsageCount()));
+            it.put(LAST_EDIT_KEY, item.getLastEdit().format(FORMAT));
 
             toSave.add(it);
         }
@@ -265,11 +265,16 @@
         Map<String, SelectorItem> result = new HashMap<>();
 
         for (Map<String, String> entry : toRetrieve) {
-            String key = entry.get(KEY_KEY);
-            String query = entry.get(QUERY_KEY);
-            int usageCount = Integer.parseInt(entry.get(USE_COUNT_KEY));
+            try {
+                String key = entry.get(KEY_KEY);
+                String query = entry.get(QUERY_KEY);
+                LocalDateTime lastEdit = LocalDateTime.parse(entry.get(LAST_EDIT_KEY), FORMAT);
 
-            result.put(key, new SelectorItem(key, query, usageCount));
+                result.put(key, new SelectorItem(key, query, lastEdit));
+            } catch (IllegalArgumentException | DateTimeParseException e) {
+                // skip any corrupted item
+                Main.error(e);
+            }
         }
 
         return result;
@@ -411,7 +416,6 @@
 
         private final JTextField name;
         private final JosmTextArea query;
-        private final int initialNameHash;
 
         private final transient AbstractTextComponentValidator queryValidator;
         private final transient AbstractTextComponentValidator nameValidator;
@@ -419,6 +423,8 @@
         private static final int SUCCESS_BTN = 0;
         private static final int CANCEL_BTN = 1;
 
+        private final transient SelectorItem itemToEdit;
+
         /**
          * Added/Edited object to be returned. If {@link Optional#empty()} then probably
          * the user closed the dialog, otherwise {@link SelectorItem} is present.
@@ -436,10 +442,11 @@
                 String... buttonTexts) {
             super(parent, title, buttonTexts);
 
-            String nameToEdit = itemToEdit != null ? itemToEdit.getKey() : "";
-            String queryToEdit = itemToEdit != null ? itemToEdit.getQuery() : "";
-            this.initialNameHash = nameToEdit.hashCode();
+            this.itemToEdit = itemToEdit;
 
+            String nameToEdit = itemToEdit == null ? "" : itemToEdit.getKey();
+            String queryToEdit = itemToEdit == null ? "" : itemToEdit.getQuery();
+
             this.name = new JTextField(nameToEdit);
             this.query = new JosmTextArea(queryToEdit);
 
@@ -457,11 +464,12 @@
                 @Override
                 public boolean isValid() {
                     String currentName = name.getText();
-                    int currentHash = currentName.hashCode();
 
-                    return !Utils.isStripEmpty(currentName) &&
-                            !(currentHash != initialNameHash &&
-                                    items.containsKey(currentName));
+                    boolean notEmpty = !Utils.isStripEmpty(currentName);
+                    boolean exist = !currentName.equals(nameToEdit) &&
+                                        items.containsKey(currentName);
+
+                    return notEmpty && !exist;
                 }
             };
 
@@ -477,8 +485,8 @@
             panel.add(this.name, GBC.eol().insets(5).anchor(GBC.SOUTHEAST).fill(GBC.HORIZONTAL));
             panel.add(queryScrollPane, constraint);
 
-            setDefaultButton(SUCCESS_BTN);
-            setCancelButton(CANCEL_BTN);
+            setDefaultButton(SUCCESS_BTN + 1);
+            setCancelButton(CANCEL_BTN + 1);
             setPreferredSize(new Dimension(400, 400));
             setContent(panel, false);
         }
@@ -500,6 +508,8 @@
                             tr("The item cannot be created with provided name"),
                             tr("Warning"),
                             JOptionPane.WARNING_MESSAGE);
+
+                    return;
                 } else if (!this.queryValidator.isValid()) {
                     JOptionPane.showMessageDialog(
                             componentParent,
@@ -506,13 +516,30 @@
                             tr("The item cannot be created with an empty query"),
                             tr("Warning"),
                             JOptionPane.WARNING_MESSAGE);
-                } else {
-                    this.outputItem = Optional.of(new SelectorItem(this.name.getText(), this.query.getText()));
-                    super.buttonAction(buttonIndex, evt);
+
+                    return;
+                } else if (this.itemToEdit != null) { // editing the item
+                    String newKey = this.name.getText();
+                    String newQuery = this.query.getText();
+
+                    String itemKey = this.itemToEdit.getKey();
+                    String itemQuery = this.itemToEdit.getQuery();
+
+                    this.outputItem = Optional.of(new SelectorItem(
+                            this.name.getText(),
+                            this.query.getText(),
+                            !newKey.equals(itemKey) || !newQuery.equals(itemQuery)
+                                ? LocalDateTime.now()
+                                : this.itemToEdit.getLastEdit()));
+
+                } else { // creating new
+                    this.outputItem = Optional.of(new SelectorItem(
+                            this.name.getText(),
+                            this.query.getText()));
                 }
-            } else {
-                super.buttonAction(buttonIndex, evt);
             }
+
+            super.buttonAction(buttonIndex, evt);
         }
     }
 
@@ -523,7 +550,7 @@
     public static class SelectorItem {
         private final String itemKey;
         private final String query;
-        private int usageCount;
+        private final LocalDateTime lastEdit;
 
         /**
          * Constructs a new {@code SelectorItem}.
@@ -533,7 +560,7 @@
          * @exception IllegalArgumentException if any parameter is empty.
          */
         public SelectorItem(String key, String query) {
-            this(key, query, 1);
+            this(key, query, LocalDateTime.now());
         }
 
         /**
@@ -540,13 +567,14 @@
          * Constructs a new {@code SelectorItem}.
          * @param key The key of this item.
          * @param query The query of the item.
-         * @param usageCount The number of times this query was used.
+         * @param lastEdit The latest when the item was
          * @exception NullPointerException if any parameter is {@code null}.
          * @exception IllegalArgumentException if any parameter is empty.
          */
-        public SelectorItem(String key, String query, int usageCount) {
-            Objects.requireNonNull(key);
-            Objects.requireNonNull(query);
+        public SelectorItem(String key, String query, LocalDateTime lastEdit) {
+            Objects.requireNonNull(key, "The name of the item cannot be null");
+            Objects.requireNonNull(query, "The query of the item cannot be null");
+            Objects.requireNonNull(lastEdit, "The last edit date time cannot be null");
 
             if (Utils.isStripEmpty(key)) {
                 throw new IllegalArgumentException("The key of the item cannot be empty");
@@ -557,7 +585,7 @@
 
             this.itemKey = key;
             this.query = query;
-            this.usageCount = usageCount;
+            this.lastEdit = lastEdit;
         }
 
         /**
@@ -577,33 +605,13 @@
         }
 
         /**
-         * Gets the number of times the query was used by the user.
-         * @return The usage count of this item.
+         * Gets the latest date time when the item was created/changed.
+         * @return The latest date time when the item was created/changed.
          */
-        public int getUsageCount() {
-            return this.usageCount;
+        public LocalDateTime getLastEdit() {
+            return lastEdit;
         }
 
-        /**
-         * Increments the {@link SelectorItem#usageCount} by one till
-         * it reaches {@link Integer#MAX_VALUE}.
-         */
-        public void increaseUsageCount() {
-            if (this.usageCount < Integer.MAX_VALUE) {
-                this.usageCount++;
-            }
-        }
-
-        /**
-         * Decrements the {@link SelectorItem#usageCount} ny one till
-         * it reaches 0.
-         */
-        public void decreaseUsageCount() {
-            if (this.usageCount > 0) {
-                this.usageCount--;
-            }
-        }
-
         @Override
         public int hashCode() {
             final int prime = 31;
Index: src/org/openstreetmap/josm/gui/download/OverpassQueryWizardDialog.java
===================================================================
--- src/org/openstreetmap/josm/gui/download/OverpassQueryWizardDialog.java	(revision 12597)
+++ src/org/openstreetmap/josm/gui/download/OverpassQueryWizardDialog.java	(working copy)
@@ -36,6 +36,7 @@
  */
 public final class OverpassQueryWizardDialog extends ExtendedDialog {
 
+    private final HistoryComboBox queryWizard;
     private static final String HEADLINE_START = "<h3>";
     private static final String HEADLINE_END = "</h3>";
     private static final String TR_START = "<tr>";
@@ -42,10 +43,11 @@
     private static final String TR_END = "</tr>";
     private static final String TD_START = "<td>";
     private static final String TD_END = "</td>";
-    private final HistoryComboBox queryWizard;
-    private final OverpassTurboQueryWizard overpassQueryBuilder;
+    private static final String SPAN_START = "<span>";
+    private static final String SPAN_END = "</span>";
     private static final CollectionProperty OVERPASS_WIZARD_HISTORY =
             new CollectionProperty("download.overpass.wizard", new ArrayList<String>());
+    private final transient OverpassTurboQueryWizard overpassQueryBuilder;
 
     // dialog buttons
     private static final int BUILD_QUERY = 0;
@@ -199,7 +201,7 @@
                 .append("<table>").append(TR_START).append(TD_START)
                 .append(Utils.joinAsHtmlUnorderedList(Arrays.asList("<i>type:node</i>", "<i>type:relation</i>", "<i>type:way</i>")))
                 .append(TD_END).append(TD_START)
-                .append("<span>").append(tr("Download objects of a certain type.")).append("</span>")
+                .append(SPAN_START).append(tr("Download objects of a certain type.")).append(SPAN_END)
                 .append(TD_END).append(TR_END)
                 .append(TR_START).append(TD_START)
                 .append(Utils.joinAsHtmlUnorderedList(
@@ -214,9 +216,9 @@
                                 "is set to 1000m, but it can be changed in the generated query.", "<i>tourism=hotel around Berlin</i> -"),
                         tr("{0} all objects within the current selection that have {1} as attribute.", "<i>tourism=hotel in bbox</i> -",
                                 "'tourism=hotel'"))))
-                .append("<span>")
+                .append(SPAN_START)
                 .append(tr("Instead of <i>location</i> any valid place name can be used like address, city, etc."))
-                .append("</span>")
+                .append(SPAN_END)
                 .append(TD_END).append(TR_END)
                 .append(TR_START).append(TD_START)
                 .append(Utils.joinAsHtmlUnorderedList(Arrays.asList("<i>key=value</i>", "<i>key=*</i>", "<i>key~regex</i>",
@@ -230,10 +232,10 @@
                         tr("<i>expression1 {0} expression2</i>", "or"),
                         tr("<i>expression1 {0} expression2</i>", "and"))))
                 .append(TD_END).append(TD_START)
-                .append("<span>")
+                .append(SPAN_START)
                 .append(tr("Basic logical operators can be used to create more sophisticated queries. Instead of \"or\" - \"|\", \"||\" " +
                         "can be used, and instead of \"and\" - \"&\", \"&&\"."))
-                .append("</span>")
+                .append(SPAN_END)
                 .append(TD_END).append(TR_END).append("</table>")
                 .append("</body>")
                 .append("</html>")
