Index: trunk/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java	(revision 9241)
+++ trunk/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java	(revision 9242)
@@ -15,5 +15,4 @@
 import java.awt.event.KeyEvent;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -41,7 +40,7 @@
 import org.openstreetmap.josm.data.preferences.CollectionProperty;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
-import org.openstreetmap.josm.data.preferences.StringProperty;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.download.DownloadDialog;
+import org.openstreetmap.josm.gui.preferences.server.OverpassServerPreference;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
@@ -58,11 +57,4 @@
  */
 public class OverpassDownloadAction extends JosmAction {
-
-    /**
-     * The {@link StringProperty property} of the currently selected Overpass server.
-     *
-     * @since 9241
-     */
-    public static final StringProperty OVERPASS_SERVER = new StringProperty("download.overpass.server", "http://overpass-api.de/api/");
 
     /**
@@ -88,5 +80,5 @@
             DownloadOsmTask task = new DownloadOsmTask();
             Future<?> future = task.download(
-                    new OverpassDownloadReader(area, dialog.getOverpassServer(), dialog.getOverpassQuery()),
+                    new OverpassDownloadReader(area, OverpassServerPreference.getOverpassServer(), dialog.getOverpassQuery()),
                     dialog.isNewLayerRequired(), area, null);
             Main.worker.submit(new PostDownloadHandler(task, future));
@@ -124,10 +116,7 @@
     private static final class OverpassDownloadDialog extends DownloadDialog {
 
-        private HistoryComboBox overpassServer;
         private HistoryComboBox overpassWizard;
         private JosmTextArea overpassQuery;
         private static OverpassDownloadDialog instance;
-        private static final CollectionProperty OVERPASS_SERVER_HISTORY = new CollectionProperty("download.overpass.servers",
-                Arrays.asList("http://overpass-api.de/api/", "http://overpass.osm.rambler.ru/cgi/"));
         private static final CollectionProperty OVERPASS_WIZARD_HISTORY = new CollectionProperty("download.overpass.wizard",
                 new ArrayList<String>());
@@ -203,12 +192,4 @@
             pnl.add(pane, gbc);
 
-            overpassServer = new HistoryComboBox();
-            overpassServer.getEditor().getEditorComponent().addFocusListener(disableActionsFocusListener);
-            pnl.add(new JLabel(tr("Overpass server: ")), GBC.std().insets(5, 5, 5, 5));
-            pnl.add(overpassServer, GBC.eol().fill(GBC.HORIZONTAL));
-        }
-
-        public String getOverpassServer() {
-            return overpassServer.getText();
         }
 
@@ -224,6 +205,4 @@
         public void restoreSettings() {
             super.restoreSettings();
-            overpassServer.setPossibleItems(OVERPASS_SERVER_HISTORY.get());
-            overpassServer.setText(OVERPASS_SERVER.get());
             overpassWizard.setPossibleItems(OVERPASS_WIZARD_HISTORY.get());
         }
@@ -233,6 +212,4 @@
             super.rememberSettings();
             overpassWizard.addCurrentItemToHistory();
-            OVERPASS_SERVER.put(getOverpassServer());
-            OVERPASS_SERVER_HISTORY.put(overpassServer.getHistory());
             OVERPASS_WIZARD_HISTORY.put(overpassWizard.getHistory());
             OverpassQueryHistoryPopup.addToHistory(getOverpassQuery());
Index: trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java	(revision 9241)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java	(revision 9242)
@@ -52,4 +52,5 @@
 import org.openstreetmap.josm.gui.preferences.remotecontrol.RemoteControlPreference;
 import org.openstreetmap.josm.gui.preferences.server.AuthenticationPreference;
+import org.openstreetmap.josm.gui.preferences.server.OverpassServerPreference;
 import org.openstreetmap.josm.gui.preferences.server.ProxyPreference;
 import org.openstreetmap.josm.gui.preferences.server.ServerAccessPreference;
@@ -561,4 +562,5 @@
         settingsFactories.add(new AuthenticationPreference.Factory());
         settingsFactories.add(new ProxyPreference.Factory());
+        settingsFactories.add(new OverpassServerPreference.Factory());
         settingsFactories.add(new MapPreference.Factory());
         settingsFactories.add(new ProjectionPreference.Factory());
Index: trunk/src/org/openstreetmap/josm/gui/preferences/server/OverpassServerPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/server/OverpassServerPreference.java	(revision 9242)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/server/OverpassServerPreference.java	(revision 9242)
@@ -0,0 +1,102 @@
+package org.openstreetmap.josm.gui.preferences.server;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.GridBagLayout;
+import java.util.Arrays;
+
+import javax.swing.BorderFactory;
+import javax.swing.Box;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.openstreetmap.josm.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.data.preferences.CollectionProperty;
+import org.openstreetmap.josm.data.preferences.StringProperty;
+import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
+import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
+import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
+import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
+import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
+import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
+import org.openstreetmap.josm.tools.GBC;
+
+/**
+ * Preferences related to Overpass API servers.
+ *
+ * @since 9142
+ */
+public class OverpassServerPreference implements SubPreferenceSetting {
+
+    private static final StringProperty OVERPASS_SERVER = new StringProperty("download.overpass.server",
+            "http://overpass-api.de/api/");
+    private static final CollectionProperty OVERPASS_SERVER_HISTORY = new CollectionProperty("download.overpass.servers",
+            Arrays.asList("http://overpass-api.de/api/", "http://overpass.osm.rambler.ru/cgi/"));
+    private static final BooleanProperty FOR_MULTI_FETCH = new BooleanProperty("download.overpass.for-multi-fetch", false);
+
+    private HistoryComboBox overpassServer = new HistoryComboBox();
+    private final JCheckBox forMultiFetch = new JCheckBox(tr("Use Overpass server for object downloads"));
+
+    /**
+     * Factory used to create a new {@link OverpassServerPreference}.
+     */
+    public static class Factory implements PreferenceSettingFactory {
+        @Override
+        public PreferenceSetting createPreferenceSetting() {
+            return new OverpassServerPreference();
+        }
+    }
+
+    @Override
+    public TabPreferenceSetting getTabPreferenceSetting(PreferenceTabbedPane gui) {
+        return gui.getServerPreference();
+    }
+
+    @Override
+    public void addGui(PreferenceTabbedPane gui) {
+        final JPanel panel = new JPanel(new GridBagLayout());
+
+        panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
+        panel.add(new JLabel(tr("Overpass server: ")), GBC.std().insets(5, 5, 5, 5));
+        panel.add(overpassServer, GBC.eop().fill(GBC.HORIZONTAL));
+        overpassServer.setPossibleItems(OVERPASS_SERVER_HISTORY.get());
+        overpassServer.setText(OVERPASS_SERVER.get());
+
+        panel.add(forMultiFetch, GBC.eop());
+        forMultiFetch.setSelected(useForMultiFetch());
+
+        panel.add(Box.createVerticalGlue(), GBC.eol().fill());
+
+        getTabPreferenceSetting(gui).addSubTab(this, tr("Overpass server"), panel);
+    }
+
+    @Override
+    public boolean ok() {
+        OVERPASS_SERVER.put(overpassServer.getText());
+        OVERPASS_SERVER_HISTORY.put(overpassServer.getHistory());
+        FOR_MULTI_FETCH.put(forMultiFetch.isSelected());
+        return false;
+    }
+
+    @Override
+    public boolean isExpert() {
+        return true;
+    }
+
+    /**
+     * Returns the URL of the currently selected Overpass server.
+     * @return the URL of the currently selected Overpass server.
+     */
+    public static String getOverpassServer() {
+        return OVERPASS_SERVER.get();
+    }
+
+    /**
+     * Returns true if objects should be fetched from an Overpass server instead of the OSM API.
+     * @return true if objects should be fetched from an Overpass server instead of the OSM API.
+     */
+    public static boolean useForMultiFetch() {
+        return FOR_MULTI_FETCH.get();
+    }
+}
Index: trunk/src/org/openstreetmap/josm/io/MultiFetchOverpassObjectReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/MultiFetchOverpassObjectReader.java	(revision 9241)
+++ trunk/src/org/openstreetmap/josm/io/MultiFetchOverpassObjectReader.java	(revision 9242)
@@ -2,6 +2,6 @@
 package org.openstreetmap.josm.io;
 
-import org.openstreetmap.josm.actions.OverpassDownloadAction;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
+import org.openstreetmap.josm.gui.preferences.server.OverpassServerPreference;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -29,5 +29,5 @@
     @Override
     protected String getBaseUrl() {
-        return OverpassDownloadAction.OVERPASS_SERVER.get();
+        return OverpassServerPreference.getOverpassServer();
     }
 }
Index: trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java	(revision 9241)
+++ trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java	(revision 9242)
@@ -35,4 +35,5 @@
 import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.preferences.server.OverpassServerPreference;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -85,5 +86,5 @@
     /**
      * Creates a new instance of {@link MultiFetchServerObjectReader} or {@link MultiFetchOverpassObjectReader}
-     * depending on the {@code download.overpass.for-multi-fetch} preference.
+     * depending on the {@link OverpassServerPreference#useForMultiFetch preference}.
      *
      * @return a new instance
@@ -91,5 +92,5 @@
      */
     public static MultiFetchServerObjectReader create() {
-        return create(Main.pref.getBoolean("download.overpass.for-multi-fetch", false));
+        return create(OverpassServerPreference.useForMultiFetch());
     }
 
