Index: trunk/src/org/openstreetmap/josm/gui/download/OverpassDownloadSource.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/download/OverpassDownloadSource.java	(revision 16354)
+++ trunk/src/org/openstreetmap/josm/gui/download/OverpassDownloadSource.java	(revision 16355)
@@ -39,5 +39,4 @@
 import org.openstreetmap.josm.gui.download.DownloadSourceSizingPolicy.AdjustableDownloadSizePolicy;
 import org.openstreetmap.josm.gui.download.overpass.OverpassWizardRegistration;
-import org.openstreetmap.josm.gui.download.overpass.OverpassWizardRegistration.OverpassQueryWizard;
 import org.openstreetmap.josm.gui.download.overpass.OverpassWizardRegistration.OverpassWizardCallbacks;
 import org.openstreetmap.josm.gui.util.GuiHelper;
@@ -168,7 +167,7 @@
             leftPanel.add(new JLabel(tr("Overpass query:")), GBC.eol().insets(5, 1, 5, 1).anchor(GBC.NORTHWEST));
             leftPanel.add(new JLabel(), GBC.eol().fill(GBC.VERTICAL));
-            OverpassWizardRegistration.getWizards()
+            OverpassWizardRegistration.getWizards(this)
                 .stream()
-                .map(this::generateWizardButton)
+                .map(JButton::new)
                 .forEach(button -> leftPanel.add(button, GBC.eol().anchor(GBC.CENTER)));
             leftPanel.add(new JLabel(), GBC.eol().fill(GBC.VERTICAL));
@@ -180,16 +179,4 @@
 
             setMinimumSize(new Dimension(450, 240));
-        }
-
-        private JButton generateWizardButton(OverpassQueryWizard wizard) {
-            JButton openQueryWizard = new JButton(wizard.getWizardName());
-            openQueryWizard.setToolTipText(wizard.getWizardTooltip().orElse(null));
-            openQueryWizard.addActionListener(new AbstractAction() {
-                @Override
-                public void actionPerformed(ActionEvent e) {
-                    wizard.startWizard(OverpassDownloadSourcePanel.this);
-                }
-            });
-            return openQueryWizard;
         }
 
Index: trunk/src/org/openstreetmap/josm/gui/download/OverpassQueryWizardDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/download/OverpassQueryWizardDialog.java	(revision 16354)
+++ trunk/src/org/openstreetmap/josm/gui/download/OverpassQueryWizardDialog.java	(revision 16355)
@@ -45,5 +45,5 @@
                 tr("Build query"), tr("Build query and execute"), tr("Cancel"));
         this.callbacks = callbacks;
-        setButtonIcons("ok", "download-overpass", "cancel");
+        setButtonIcons("dialogs/magic-wand", "download-overpass", "cancel");
         setCancelButton(CANCEL + 1);
         setDefaultButton(BUILD_AN_EXECUTE_QUERY + 1);
Index: trunk/src/org/openstreetmap/josm/gui/download/overpass/OverpassWizardRegistration.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/download/overpass/OverpassWizardRegistration.java	(revision 16354)
+++ trunk/src/org/openstreetmap/josm/gui/download/overpass/OverpassWizardRegistration.java	(revision 16355)
@@ -5,11 +5,17 @@
 
 import java.awt.Component;
+import java.awt.event.ActionEvent;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
-import java.util.Optional;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
 
 import org.openstreetmap.josm.gui.download.OverpassQueryWizardDialog;
+import org.openstreetmap.josm.tools.ImageProvider;
 
 /**
@@ -22,5 +28,5 @@
      * A list of all registered wizards. Needs to be synchronized since plugin registration may happen outside main thread / asynchronously.
      */
-    private static List<OverpassQueryWizard> wizards = Collections.synchronizedList(new ArrayList<>());
+    private static final List<Function<OverpassWizardCallbacks, Action>> wizards = Collections.synchronizedList(new ArrayList<>());
 
     /**
@@ -29,7 +35,7 @@
      * To be called by plugins during the JOSM boot process or at least before opening the download dialog for the first time.
      * @param wizard The wizard to register
-     * @since 13930
+     * @since 13930, 16355 (signature)
      */
-    public static void registerWizard(OverpassQueryWizard wizard) {
+    public static void registerWizard(Function<OverpassWizardCallbacks, Action> wizard) {
         Objects.requireNonNull(wizard, "wizard");
         wizards.add(wizard);
@@ -40,24 +46,20 @@
      * @return The list of wizards.
      */
-    public static List<OverpassQueryWizard> getWizards() {
-        return Collections.unmodifiableList(wizards);
+    public static List<Action> getWizards(OverpassWizardCallbacks callbacks) {
+        return wizards.stream()
+                .map(x -> x.apply(callbacks))
+                .collect(Collectors.toList());
     }
 
     static {
         // Register the default wizard
-        registerWizard(new OverpassQueryWizard() {
+        registerWizard(callbacks -> new AbstractAction(tr("Query Wizard")) {
+            {
+                putValue(SHORT_DESCRIPTION, tr("Build an Overpass query using the Overpass Turbo Query Wizard tool"));
+                new ImageProvider("dialogs/magic-wand").getResource().attachImageIcon(this, true);
+            }
             @Override
-            public void startWizard(OverpassWizardCallbacks callbacks) {
+            public void actionPerformed(ActionEvent e) {
                 new OverpassQueryWizardDialog(callbacks).showDialog();
-            }
-
-            @Override
-            public Optional<String> getWizardTooltip() {
-                return Optional.of(tr("Build an Overpass query using the Overpass Turbo Query Wizard tool"));
-            }
-
-            @Override
-            public String getWizardName() {
-                return tr("Query Wizard");
             }
         });
@@ -69,30 +71,5 @@
 
     /**
-     * Defines a query wizard that generates overpass queries.
-     * @author Michael Zangl
-     * @since 13930
-     */
-    public interface OverpassQueryWizard {
-        /**
-         * Get the name of the wizard
-         * @return The name
-         */
-        String getWizardName();
-
-        /**
-         * Get the tooltip text to display when hovering the wizard button.
-         * @return The tooltip text or an empty optional to display no tooltip.
-         */
-        Optional<String> getWizardTooltip();
-
-        /**
-         * Start the wizard.
-         * @param callbacks The callbacks to use to send back wizard results.
-         */
-        void startWizard(OverpassWizardCallbacks callbacks);
-    }
-
-    /**
-     * Wizard callbacks required by {@link OverpassQueryWizard#startWizard}
+     * Wizard callbacks required by {@link #registerWizard}
      * @author Michael Zangl
      * @since 13930
