Index: src/org/openstreetmap/josm/actions/SaveAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/SaveAction.java	(revision 5010)
+++ src/org/openstreetmap/josm/actions/SaveAction.java	(working copy)
@@ -1,8 +1,8 @@
 // License: GPL. Copyright 2007 by Immanuel Scholz and others
 package org.openstreetmap.josm.actions;
 
+import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 import static org.openstreetmap.josm.tools.I18n.tr;
-import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 
 import java.awt.event.KeyEvent;
 import java.io.File;
@@ -19,17 +19,23 @@
  * @author imi
  */
 public class SaveAction extends SaveActionBase {
+    private static SaveAction instance = new SaveAction();
 
     /**
      * Construct the action with "Save" as label.
      * @param layer Save this layer.
      */
-    public SaveAction() {
+    private SaveAction() {
         super(tr("Save"), "save", tr("Save the current data."),
                 Shortcut.registerShortcut("system:save", tr("File: {0}", tr("Save")), KeyEvent.VK_S, Shortcut.CTRL));
         putValue("help", ht("/Action/Save"));
     }
 
+    public static SaveAction getInstance() {
+        return instance;
+    }
+
+
     @Override public File getFile(Layer layer) {
         File f = layer.getAssociatedFile();
         if(f != null && ! f.exists()) {
Index: src/org/openstreetmap/josm/actions/SaveActionBase.java
===================================================================
--- src/org/openstreetmap/josm/actions/SaveActionBase.java	(revision 5010)
+++ src/org/openstreetmap/josm/actions/SaveActionBase.java	(working copy)
@@ -9,6 +9,7 @@
 import java.util.Collection;
 import java.util.LinkedList;
 import java.util.List;
+
 import javax.swing.JFileChooser;
 import javax.swing.JOptionPane;
 import javax.swing.filechooser.FileFilter;
@@ -32,9 +33,8 @@
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (!isEnabled()) {
+        if (!isEnabled())
             return;
-        }
         boolean saved = doSave();
         if (saved) {
             addToFileOpenHistory();
@@ -59,13 +59,13 @@
         return doInternalSave(layer, file);
     }
 
-    public boolean doSave(Layer layer, File file) {
+    public static boolean doSave(Layer layer, File file) {
         if(!checkSaveConditions(layer))
             return false;
         return doInternalSave(layer, file);
     }
 
-    private boolean doInternalSave(Layer layer, File file) {
+    private static boolean doInternalSave(Layer layer, File file) {
         if (file == null)
             return false;
 
@@ -103,7 +103,7 @@
      * there is no conflict etc.)
      * @return <code>true</code>, if it is safe to save.
      */
-    public boolean checkSaveConditions(Layer layer) {
+    public static boolean checkSaveConditions(Layer layer) {
         if (layer instanceof GpxLayer)
             return ((GpxLayer)layer).data != null;
         else if (layer instanceof OsmDataLayer)  {
@@ -152,7 +152,7 @@
      *
      * @return <code>true</code>, if a save result in an empty data set.
      */
-    private boolean isDataSetEmpty(OsmDataLayer layer) {
+    private static boolean isDataSetEmpty(OsmDataLayer layer) {
         for (OsmPrimitive osm : layer.data.allNonDeletedPrimitives())
             if (!osm.isDeleted() || !osm.isNewOrUndeleted())
                 return false;
Index: src/org/openstreetmap/josm/gui/MainMenu.java
===================================================================
--- src/org/openstreetmap/josm/gui/MainMenu.java	(revision 5010)
+++ src/org/openstreetmap/josm/gui/MainMenu.java	(working copy)
@@ -119,7 +119,7 @@
     public final OpenFileAction openFile = new OpenFileAction();
     public final RecentlyOpenedFilesMenu recentlyOpened = new RecentlyOpenedFilesMenu();
     public final OpenLocationAction openLocation = new OpenLocationAction();
-    public final JosmAction save = new SaveAction();
+    public final JosmAction save = SaveAction.getInstance();
     public final JosmAction saveAs = new SaveAsAction();
     public JosmAction sessionLoad;
     public JosmAction sessionSaveAs;
Index: src/org/openstreetmap/josm/gui/layer/Layer.java
===================================================================
--- src/org/openstreetmap/josm/gui/layer/Layer.java	(revision 5010)
+++ src/org/openstreetmap/josm/gui/layer/Layer.java	(working copy)
@@ -365,7 +365,7 @@
         }
 
         public void actionPerformed(ActionEvent e) {
-            new SaveAction().doSave(layer);
+            SaveAction.getInstance().doSave(layer);
         }
     }
 
Index: src/org/openstreetmap/josm/gui/io/SaveLayerTask.java
===================================================================
--- src/org/openstreetmap/josm/gui/io/SaveLayerTask.java	(revision 5010)
+++ src/org/openstreetmap/josm/gui/io/SaveLayerTask.java	(working copy)
@@ -47,7 +47,7 @@
     public void run() {
         try {
             parentMonitor.subTask(tr("Saving layer to ''{0}'' ...", layerInfo.getFile().toString()));
-            if (!new SaveAction().doSave(layerInfo.getLayer(), layerInfo.getFile())) {
+            if (!SaveAction.doSave(layerInfo.getLayer(), layerInfo.getFile())) {
                 setFailed(true);
                 return;
             }
Index: src/org/openstreetmap/josm/io/session/OsmDataSessionExporter.java
===================================================================
--- src/org/openstreetmap/josm/io/session/OsmDataSessionExporter.java	(revision 5010)
+++ src/org/openstreetmap/josm/io/session/OsmDataSessionExporter.java	(working copy)
@@ -18,9 +18,9 @@
 import java.io.PrintWriter;
 import java.io.UnsupportedEncodingException;
 import java.io.Writer;
+import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URL;
-import java.net.MalformedURLException;
 import java.util.Collection;
 import java.util.Collections;
 
@@ -34,8 +34,6 @@
 import javax.swing.JTextField;
 import javax.swing.SwingConstants;
 
-import org.w3c.dom.Element;
-
 import org.openstreetmap.josm.actions.SaveAction;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -45,6 +43,7 @@
 import org.openstreetmap.josm.io.session.SessionWriter.ExportSupport;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.w3c.dom.Element;
 
 public class OsmDataSessionExporter implements SessionLayerExporter {
 
@@ -74,7 +73,7 @@
         }
 
         public void actionPerformed(ActionEvent e) {
-            new SaveAction().doSave(layer);
+            SaveAction.getInstance().doSave(layer);
             updateEnabledState();
         }
 
