Index: trunk/src/org/openstreetmap/josm/Main.java
===================================================================
--- trunk/src/org/openstreetmap/josm/Main.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/Main.java	(revision 11713)
@@ -82,4 +82,5 @@
 import org.openstreetmap.josm.gui.layer.TMSLayer;
 import org.openstreetmap.josm.gui.preferences.ToolbarPreferences;
+import org.openstreetmap.josm.gui.preferences.display.LafPreference;
 import org.openstreetmap.josm.gui.preferences.imagery.ImageryPreference;
 import org.openstreetmap.josm.gui.preferences.map.MapPaintPreference;
@@ -765,5 +766,5 @@
 
         String defaultlaf = platform.getDefaultStyle();
-        String laf = Main.pref.get("laf", defaultlaf);
+        String laf = LafPreference.LAF.get();
         try {
             UIManager.setLookAndFeel(laf);
@@ -787,14 +788,14 @@
                 } catch (UnsupportedLookAndFeelException ex) {
                     info("Look and Feel not supported: " + laf);
-                    Main.pref.put("laf", defaultlaf);
+                    LafPreference.LAF.put(defaultlaf);
                     trace(ex);
                 }
             } else {
                 info("Look and Feel not found: " + laf);
-                Main.pref.put("laf", defaultlaf);
+                LafPreference.LAF.put(defaultlaf);
             }
         } catch (UnsupportedLookAndFeelException e) {
             info("Look and Feel not supported: " + laf);
-            Main.pref.put("laf", defaultlaf);
+            LafPreference.LAF.put(defaultlaf);
             trace(e);
         } catch (InstantiationException | IllegalAccessException e) {
Index: trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 11713)
@@ -137,8 +137,8 @@
      * Constructs a new {@code AutoScaleAction}.
      * @param mode The autoscale mode (one of {@link AutoScaleAction#MODES})
-     * @param marker Used only to differentiate from default constructor
+     * @param marker Must be set to false. Used only to differentiate from default constructor
      */
     private AutoScaleAction(String mode, boolean marker) {
-        super(false);
+        super(marker);
         this.mode = mode;
     }
Index: trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java	(revision 11713)
@@ -53,7 +53,5 @@
      */
     public ImageryAdjustAction(AbstractTileSourceLayer<?> layer) {
-        super(tr("New offset"), "adjustimg",
-                tr("Adjust the position of this imagery layer"), Main.map,
-                cursor);
+        super(tr("New offset"), "adjustimg", tr("Adjust the position of this imagery layer"), cursor);
         putValue("toolbar", Boolean.FALSE);
         this.layer = layer;
Index: trunk/src/org/openstreetmap/josm/actions/LassoModeAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/LassoModeAction.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/actions/LassoModeAction.java	(revision 11713)
@@ -22,5 +22,4 @@
                 /* ICON(mapmode/) */ "rope",
                 tr("Lasso selection mode: select objects within a hand-drawn region"),
-                null,
                 ImageProvider.getCursor("normal", "rope"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/AddNoteAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/AddNoteAction.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/AddNoteAction.java	(revision 11713)
@@ -13,5 +13,4 @@
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.NoteData;
-import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.NoteInputDialog;
 import org.openstreetmap.josm.gui.Notification;
@@ -30,11 +29,10 @@
     /**
      * Construct a new map mode.
-     * @param mapFrame Map frame to pass to the superconstructor
      * @param data Note data container. Must not be null
+     * @since 11713
      */
-    public AddNoteAction(MapFrame mapFrame, NoteData data) {
-        super(tr("Add a new Note"), "addnote",
-            tr("Add note mode"),
-            mapFrame, ImageProvider.getCursor("crosshair", "create_note"));
+    public AddNoteAction(NoteData data) {
+        super(tr("Add a new Note"), "addnote", tr("Add note mode"),
+            ImageProvider.getCursor("crosshair", "create_note"));
         CheckParameterUtil.ensureParameterNotNull(data, "data");
         noteData = data;
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(revision 11713)
@@ -22,5 +22,4 @@
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.WaySegment;
-import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.dialogs.relation.RelationDialogManager;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -89,7 +88,7 @@
     /**
      * Construct a new DeleteAction. Mnemonic is the delete - key.
-     * @param mapFrame The frame this action belongs to.
-     */
-    public DeleteAction(MapFrame mapFrame) {
+     * @since 11713
+     */
+    public DeleteAction() {
         super(tr("Delete Mode"),
                 "delete",
@@ -97,9 +96,9 @@
                 Shortcut.registerShortcut("mapmode:delete", tr("Mode: {0}", tr("Delete")),
                 KeyEvent.VK_DELETE, Shortcut.CTRL),
-                mapFrame,
                 ImageProvider.getCursor("normal", "delete"));
     }
 
-    @Override public void enterMode() {
+    @Override
+    public void enterMode() {
         super.enterMode();
         if (!isEnabled())
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 11713)
@@ -54,5 +54,4 @@
 import org.openstreetmap.josm.data.preferences.StrokeProperty;
 import org.openstreetmap.josm.gui.MainMenu;
-import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.MapViewState.MapViewPoint;
@@ -156,10 +155,10 @@
     /**
      * Constructs a new {@code DrawAction}.
-     * @param mapFrame Map frame
-     */
-    public DrawAction(MapFrame mapFrame) {
+     * @since 11713
+     */
+    public DrawAction() {
         super(tr("Draw"), "node/autonode", tr("Draw nodes"),
                 Shortcut.registerShortcut("mapmode:draw", tr("Mode: {0}", tr("Draw")), KeyEvent.VK_A, Shortcut.DIRECT),
-                mapFrame, ImageProvider.getCursor("crosshair", null));
+                ImageProvider.getCursor("crosshair", null));
 
         snappingShortcut = Shortcut.registerShortcut("mapmode:drawanglesnapping",
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 11713)
@@ -45,5 +45,4 @@
 import org.openstreetmap.josm.data.preferences.ColorProperty;
 import org.openstreetmap.josm.gui.MainMenu;
-import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.draw.MapViewPath;
@@ -210,10 +209,9 @@
     /**
      * Creates a new ExtrudeAction
-     * @param mapFrame The MapFrame this action belongs to.
-     */
-    public ExtrudeAction(MapFrame mapFrame) {
+     * @since 11713
+     */
+    public ExtrudeAction() {
         super(tr("Extrude"), /* ICON(mapmode/) */ "extrude/extrude", tr("Create areas"),
                 Shortcut.registerShortcut("mapmode:extrude", tr("Mode: {0}", tr("Extrude")), KeyEvent.VK_X, Shortcut.DIRECT),
-                mapFrame,
                 ImageProvider.getCursor("normal", "rectangle"));
         putValue("help", ht("/Action/Extrude"));
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java	(revision 11713)
@@ -40,5 +40,4 @@
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.data.preferences.StrokeProperty;
-import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.draw.MapViewPath;
@@ -111,12 +110,12 @@
     /**
      * Constructs a new {@code ImproveWayAccuracyAction}.
-     * @param mapFrame Map frame
+     * @since 11713
      */
-    public ImproveWayAccuracyAction(MapFrame mapFrame) {
+    public ImproveWayAccuracyAction() {
         super(tr("Improve Way Accuracy"), "improvewayaccuracy",
                 tr("Improve Way Accuracy mode"),
                 Shortcut.registerShortcut("mapmode:ImproveWayAccuracy",
                 tr("Mode: {0}", tr("Improve Way Accuracy")),
-                KeyEvent.VK_W, Shortcut.DIRECT), mapFrame, Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+                KeyEvent.VK_W, Shortcut.DIRECT), Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
 
         readPreferences();
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/MapMode.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/MapMode.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/MapMode.java	(revision 11713)
@@ -11,10 +11,10 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
+import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Shortcut;
-import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
-import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
 
 /**
@@ -36,8 +36,8 @@
      * @param tooltip  a longer description of the action that will be displayed in the tooltip.
      * @param shortcut a ready-created shortcut object or null if you don't want a shortcut.
-     * @param mapFrame unused but kept for plugin compatibility. Can be {@code null}
-     * @param cursor cursor displayed when map mode is active
-     */
-    public MapMode(String name, String iconName, String tooltip, Shortcut shortcut, MapFrame mapFrame, Cursor cursor) {
+     * @param cursor cursor displayed when map mode is active
+     * @since 11713
+     */
+    public MapMode(String name, String iconName, String tooltip, Shortcut shortcut, Cursor cursor) {
         super(name, "mapmode/"+iconName, tooltip, shortcut, false);
         this.cursor = cursor;
@@ -50,12 +50,41 @@
      * @param iconName icon filename in {@code mapmode} directory
      * @param tooltip  a longer description of the action that will be displayed in the tooltip.
-     * @param mapFrame unused but kept for plugin compatibility. Can be {@code null}
-     * @param cursor cursor displayed when map mode is active
-     */
-    public MapMode(String name, String iconName, String tooltip, MapFrame mapFrame, Cursor cursor) {
+     * @param cursor cursor displayed when map mode is active
+     * @since 11713
+     */
+    public MapMode(String name, String iconName, String tooltip, Cursor cursor) {
         putValue(NAME, name);
         new ImageProvider("mapmode", iconName).getResource().attachImageIcon(this);
         putValue(SHORT_DESCRIPTION, tooltip);
         this.cursor = cursor;
+    }
+
+    /**
+     * Constructor for mapmodes without a menu
+     * @param name the action's text
+     * @param iconName icon filename in {@code mapmode} directory
+     * @param tooltip  a longer description of the action that will be displayed in the tooltip.
+     * @param shortcut a ready-created shortcut object or null if you don't want a shortcut.
+     * @param mapFrame unused but kept for plugin compatibility. Can be {@code null}
+     * @param cursor cursor displayed when map mode is active
+     * @deprecated use {@link #MapMode(String, String, String, Shortcut, Cursor) instead}
+     */
+    @Deprecated
+    public MapMode(String name, String iconName, String tooltip, Shortcut shortcut, MapFrame mapFrame, Cursor cursor) {
+        this(name, iconName, tooltip, shortcut, cursor);
+    }
+
+    /**
+     * Constructor for mapmodes with a menu (no shortcut will be registered)
+     * @param name the action's text
+     * @param iconName icon filename in {@code mapmode} directory
+     * @param tooltip  a longer description of the action that will be displayed in the tooltip.
+     * @param mapFrame unused but kept for plugin compatibility. Can be {@code null}
+     * @param cursor cursor displayed when map mode is active
+     * @deprecated use {@link #MapMode(String, String, String, Cursor) instead}
+     */
+    @Deprecated
+    public MapMode(String name, String iconName, String tooltip, MapFrame mapFrame, Cursor cursor) {
+        this(name, iconName, tooltip, cursor);
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java	(revision 11713)
@@ -153,5 +153,5 @@
             Shortcut.registerShortcut("mapmode:parallel", tr("Mode: {0}",
                 tr("Parallel")), KeyEvent.VK_P, Shortcut.SHIFT),
-            mapFrame, ImageProvider.getCursor("normal", "parallel"));
+            ImageProvider.getCursor("normal", "parallel"));
         putValue("help", ht("/Action/Parallel"));
         mv = mapFrame.mapView;
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java	(revision 11713)
@@ -11,4 +11,5 @@
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.gui.layer.markerlayer.PlayHeadMarker;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -30,6 +31,6 @@
      */
     public PlayHeadDragMode(PlayHeadMarker m) {
-        super(tr("Drag play head"), "playheaddrag", tr("Drag play head"), null,
-                Main.map, Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
+        super(tr("Drag play head"), "playheaddrag", tr("Drag play head"), (Shortcut) null,
+                Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
         playHeadMarker = m;
     }
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 11713)
@@ -182,5 +182,4 @@
         super(tr("Select"), "move/move", tr("Select, move, scale and rotate objects"),
                 Shortcut.registerShortcut("mapmode:select", tr("Mode: {0}", tr("Select")), KeyEvent.VK_S, Shortcut.DIRECT),
-                mapFrame,
                 ImageProvider.getCursor("normal", "selection"));
         mv = mapFrame.mapView;
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java	(revision 11713)
@@ -44,5 +44,5 @@
         super(tr("Zoom"), "zoom", tr("Zoom and move map"),
                 Shortcut.registerShortcut("mapmode:zoom", tr("Mode: {0}", tr("Zoom")), KeyEvent.CHAR_UNDEFINED, Shortcut.NONE),
-                mapFrame, ImageProvider.getCursor("normal", "zoom"));
+                ImageProvider.getCursor("normal", "zoom"));
         selectionManager = new SelectionManager(this, true, mapFrame.mapView);
     }
Index: trunk/src/org/openstreetmap/josm/gui/MainApplication.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 11713)
@@ -293,5 +293,5 @@
                 args.getSingle(Option.GEOMETRY).orElse(null),
                 !args.hasOption(Option.NO_MAXIMIZE) && Main.pref.getBoolean("gui.maximized", false));
-        final MainFrame mainFrame = new MainFrame(contentPanePrivate, mainPanel, geometry);
+        final MainFrame mainFrame = new MainFrame(contentPanePrivate, geometry);
         Main.parent = mainFrame;
 
Index: trunk/src/org/openstreetmap/josm/gui/MainFrame.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainFrame.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/gui/MainFrame.java	(revision 11713)
@@ -55,5 +55,5 @@
      */
     public MainFrame() {
-        this(new JPanel(), new MainPanel(Main.getLayerManager()), new WindowGeometry(new Rectangle(10, 10, 500, 500)));
+        this(new JPanel(), new WindowGeometry(new Rectangle(10, 10, 500, 500)));
     }
 
@@ -61,8 +61,8 @@
      * Create a new main window. The parameters will be removed in the future.
      * @param contentPanePrivate The content
-     * @param mainPanel The main panel.
      * @param geometry The inital geometry to use.
-     */
-    public MainFrame(Container contentPanePrivate, MainPanel mainPanel, WindowGeometry geometry) {
+     * @since 11713
+     */
+    public MainFrame(Container contentPanePrivate, WindowGeometry geometry) {
         super();
         this.geometry = geometry;
Index: trunk/src/org/openstreetmap/josm/gui/MainPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainPanel.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/gui/MainPanel.java	(revision 11713)
@@ -84,5 +84,5 @@
 
     private MapFrame createNewMapFrame() {
-        MapFrame mapFrame = new MapFrame(null, null);
+        MapFrame mapFrame = new MapFrame(null);
         // Required by many components.
         Main.map = mapFrame;
Index: trunk/src/org/openstreetmap/josm/gui/MapFrame.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 11713)
@@ -183,13 +183,13 @@
     /**
      * Constructs a new {@code MapFrame}.
-     * @param contentPane Ignored. Main content pane is used.
      * @param viewportData the initial viewport of the map. Can be null, then
      * the viewport is derived from the layer data.
-     */
-    public MapFrame(JPanel contentPane, ViewportData viewportData) {
+     * @since 11713
+     */
+    public MapFrame(ViewportData viewportData) {
         setSize(400, 400);
         setLayout(new BorderLayout());
 
-        mapView = new MapView(Main.getLayerManager(), contentPane, viewportData);
+        mapView = new MapView(Main.getLayerManager(), viewportData);
 
         splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true);
@@ -228,5 +228,5 @@
         mapModeSelect = new SelectAction(this);
         mapModeSelectLasso = new LassoModeAction();
-        mapModeDraw = new DrawAction(this);
+        mapModeDraw = new DrawAction();
         mapModeZoom = new ZoomAction(this);
 
@@ -235,8 +235,8 @@
         addMapMode(new IconToggleButton(mapModeDraw));
         addMapMode(new IconToggleButton(mapModeZoom, true));
-        addMapMode(new IconToggleButton(new DeleteAction(this), true));
+        addMapMode(new IconToggleButton(new DeleteAction(), true));
         addMapMode(new IconToggleButton(new ParallelWayAction(this), true));
-        addMapMode(new IconToggleButton(new ExtrudeAction(this), true));
-        addMapMode(new IconToggleButton(new ImproveWayAccuracyAction(Main.map), false));
+        addMapMode(new IconToggleButton(new ExtrudeAction(), true));
+        addMapMode(new IconToggleButton(new ImproveWayAccuracyAction(), false));
         toolBarActionsGroup.setSelected(allMapModeButtons.get(0).getModel(), true);
         toolBarActions.setFloatable(false);
Index: trunk/src/org/openstreetmap/josm/gui/MapMover.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapMover.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/gui/MapMover.java	(revision 11713)
@@ -15,5 +15,4 @@
 
 import javax.swing.AbstractAction;
-import javax.swing.JPanel;
 
 import org.openstreetmap.gui.jmapviewer.JMapViewer;
@@ -38,5 +37,7 @@
     public static final BooleanProperty PROP_ZOOM_REVERSE_WHEEL = new BooleanProperty("zoom.reverse-wheel", false);
 
-    private static final JMapViewerUpdater jMapViewerUpdater = new JMapViewerUpdater();
+    static {
+        new JMapViewerUpdater();
+    }
 
     private static class JMapViewerUpdater implements PreferenceChangedListener {
@@ -117,7 +118,7 @@
      * Constructs a new {@code MapMover}.
      * @param navComp the navigatable component
-     * @param contentPane Ignored. The main action map is used.
-     */
-    public MapMover(NavigatableComponent navComp, JPanel contentPane) {
+     * @since 11713
+     */
+    public MapMover(NavigatableComponent navComp) {
         this.nc = navComp;
         nc.addMouseListener(this);
Index: trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 11713)
@@ -237,6 +237,19 @@
      * the viewport is derived from the layer data.
      * @since 10279
-     */
+     * @deprecated use {@link #MapView(MainLayerManager, ViewportData)} instead
+     */
+    @Deprecated
     public MapView(MainLayerManager layerManager, final JPanel contentPane, final ViewportData viewportData) {
+        this(layerManager, viewportData);
+    }
+
+    /**
+     * Constructs a new {@code MapView}.
+     * @param layerManager The layers to display.
+     * @param viewportData the initial viewport of the map. Can be null, then
+     * the viewport is derived from the layer data.
+     * @since 11713
+     */
+    public MapView(MainLayerManager layerManager, final ViewportData viewportData) {
         this.layerManager = layerManager;
         initialViewport = viewportData;
@@ -249,10 +262,9 @@
             public void componentResized(ComponentEvent e) {
                 removeComponentListener(this);
-
-                mapMover = new MapMover(MapView.this, contentPane);
+                mapMover = new MapMover(MapView.this);
             }
         });
 
-        // listend to selection changes to redraw the map
+        // listens to selection changes to redraw the map
         DataSet.addSelectionListener(repaintSelectionChangedListener);
 
Index: trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/OsmLinkPaster.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/OsmLinkPaster.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/OsmLinkPaster.java	(revision 11713)
@@ -14,5 +14,4 @@
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
-import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -35,5 +34,4 @@
     }
 
-    private static final BooleanProperty PASTE_REFERRERS = new BooleanProperty("paste.url.download-referrers", true);
     private static final String OSM_SERVER = "^https?\\://(\\w+\\.)?(osm|openstreetmap)\\.org/";
 
@@ -68,5 +66,5 @@
     }
 
-    protected static LatLon parseLatLon(String transferData) {
+    static LatLon parseLatLon(String transferData) {
         Matcher matcher = Pattern
                 .compile(OSM_SERVER + "#map=(?<zoom>\\d+)/(?<lat>-?\\d+\\.\\d+)/(?<lon>-?\\d+\\.\\d+)$")
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java	(revision 11713)
@@ -355,5 +355,5 @@
                 Main.getLayerManager().addLayer(new NoteLayer());
             }
-            Main.map.selectMapMode(new AddNoteAction(Main.map, noteData));
+            Main.map.selectMapMode(new AddNoteAction(noteData));
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 11713)
@@ -86,6 +86,4 @@
     private DefaultMutableTreeNode lastSelectedNode;
 
-    private transient OsmDataLayer linkedLayer;
-
     /**
      * Constructor
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java	(revision 11713)
@@ -294,5 +294,5 @@
         actDownloadSelectedChangesets = new DownloadSelectedChangesetsAction(model);
         actDownloadSelectedContent = new DownloadSelectedChangesetContentAction(model);
-        actDownloadSelectedChangesetObjects = new DownloadSelectedChangesetObjectsAction(model);
+        actDownloadSelectedChangesetObjects = new DownloadSelectedChangesetObjectsAction();
 
         cp.add(buildToolbarPanel(), BorderLayout.NORTH);
@@ -556,5 +556,5 @@
     private class DownloadSelectedChangesetObjectsAction extends AbstractAction implements ListSelectionListener {
 
-        DownloadSelectedChangesetObjectsAction(ChangesetCacheManagerModel model) {
+        DownloadSelectedChangesetObjectsAction() {
             putValue(NAME, tr("Download changed objects"));
             new ImageProvider("downloadprimitive").getResource().attachImageIcon(this);
Index: trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java	(revision 11713)
@@ -89,5 +89,5 @@
         super(d.getString(GpxConstants.META_NAME));
         data = d;
-        drawHelper = new GpxDrawHelper(data, getColorProperty());
+        drawHelper = new GpxDrawHelper(data);
         SystemOfMeasurement.addSoMChangeListener(drawHelper);
         ensureTrackVisibilityLength();
Index: trunk/src/org/openstreetmap/josm/gui/layer/MapViewPaintable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/MapViewPaintable.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/gui/layer/MapViewPaintable.java	(revision 11713)
@@ -72,5 +72,5 @@
      * @since 10458
      */
-    public interface LayerPainter {
+    interface LayerPainter {
 
         /**
Index: trunk/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java	(revision 11713)
@@ -39,5 +39,4 @@
 import org.openstreetmap.josm.data.gpx.GpxData;
 import org.openstreetmap.josm.data.gpx.WayPoint;
-import org.openstreetmap.josm.data.preferences.AbstractProperty;
 import org.openstreetmap.josm.data.preferences.ColorProperty;
 import org.openstreetmap.josm.gui.MapView;
@@ -206,8 +205,7 @@
      * Constructs a new {@code GpxDrawHelper}.
      * @param gpxData GPX data
-     * @param abstractProperty The color to draw with
-     * @since 10824
-     */
-    public GpxDrawHelper(GpxData gpxData, AbstractProperty<Color> abstractProperty) {
+     * @since 11713
+     */
+    public GpxDrawHelper(GpxData gpxData) {
         data = gpxData;
         setupColors();
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java	(revision 11713)
@@ -40,5 +40,5 @@
      */
     @FunctionalInterface
-    public interface ToTagConvertable {
+    interface ToTagConvertable {
         /**
          * Converts the current condition to a tag
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java	(revision 11713)
@@ -58,5 +58,5 @@
     @Target(ElementType.METHOD)
     @Retention(RetentionPolicy.RUNTIME)
-    static @interface NullableArguments {}
+    @interface NullableArguments {}
 
     private static final List<Method> arrayFunctions = new ArrayList<>();
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj	(revision 11713)
@@ -67,5 +67,5 @@
      * Nicer way to refer to a lexical state.
      */
-    public static enum LexicalState {
+    public enum LexicalState {
         /** the preprocessor */
         PREPROCESSOR(0),
Index: trunk/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java	(revision 11713)
@@ -26,4 +26,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExpertToggleAction;
+import org.openstreetmap.josm.data.preferences.StringProperty;
 import org.openstreetmap.josm.gui.MapMover;
 import org.openstreetmap.josm.gui.NavigatableComponent;
@@ -44,4 +45,10 @@
  */
 public class LafPreference implements SubPreferenceSetting {
+
+    /**
+     * Look-and-feel property.
+     * @since 11713
+     */
+    public static final StringProperty LAF = new StringProperty("laf", Main.platform.getDefaultStyle());
 
     static final class LafListCellRenderer implements ListCellRenderer<LookAndFeelInfo> {
@@ -100,5 +107,5 @@
         }
 
-        String laf = Main.pref.get("laf", Main.platform.getDefaultStyle());
+        String laf = LAF.get();
         for (int i = 0; i < lafCombo.getItemCount(); ++i) {
             if (lafCombo.getItemAt(i).getClassName().equals(laf)) {
@@ -203,5 +210,5 @@
         NavigatableComponent.PROP_ZOOM_INTERMEDIATE_STEPS.put(zoomIntermediateSteps.isSelected());
         NavigatableComponent.PROP_ZOOM_RATIO.put(Math.pow(2, 1/(double) spinZoomRatio.getModel().getValue()));
-        mod |= Main.pref.put("laf", ((LookAndFeelInfo) lafCombo.getSelectedItem()).getClassName());
+        mod |= LAF.put(((LookAndFeelInfo) lafCombo.getSelectedItem()).getClassName());
         return mod;
     }
Index: trunk/src/org/openstreetmap/josm/gui/progress/ProgressMonitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/progress/ProgressMonitor.java	(revision 11712)
+++ trunk/src/org/openstreetmap/josm/gui/progress/ProgressMonitor.java	(revision 11713)
@@ -33,5 +33,5 @@
 
     @FunctionalInterface
-    public interface CancelListener {
+    interface CancelListener {
         void operationCanceled();
     }
