Index: trunk/src/org/openstreetmap/josm/data/projection/datum/SevenParameterDatum.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/datum/SevenParameterDatum.java	(revision 5550)
+++ trunk/src/org/openstreetmap/josm/data/projection/datum/SevenParameterDatum.java	(revision 5551)
@@ -14,4 +14,5 @@
  * 
  * This method is described by EPSG as EPSG::9606.
+ * Also known as Bursa-Wolf.
  */
 public class SevenParameterDatum extends AbstractDatum {
Index: trunk/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java	(revision 5550)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java	(revision 5551)
@@ -65,7 +65,7 @@
     private static Map<String, ProjectionChoice> projectionChoicesById = new HashMap<String, ProjectionChoice>();
 
-    public static final ProjectionChoice wgs84;
-    public static final ProjectionChoice mercator;
-    public static final ProjectionChoice lambert;
+    // some ProjectionChoices that are referenced from other parts of the code
+    public static final ProjectionChoice wgs84, mercator, lambert;
+
     static {
 
Index: trunk/src/org/openstreetmap/josm/io/session/SessionReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/session/SessionReader.java	(revision 5550)
+++ trunk/src/org/openstreetmap/josm/io/session/SessionReader.java	(revision 5551)
@@ -417,4 +417,20 @@
 
         layers = new ArrayList<Layer>();
+        for (int idx : layersMap.keySet()) {
+            Layer layer = layersMap.get(idx);
+            if (layer == null) {
+                continue;
+            }
+            Element el = elems.get(idx);
+            if (el.hasAttribute("visible")) {
+                layer.setVisible(Boolean.parseBoolean(el.getAttribute("visible")));
+            }
+            if (el.hasAttribute("opacity")) {
+                try {
+                    double opacity = Double.parseDouble(el.getAttribute("opacity"));
+                    layer.setOpacity(opacity);
+                } catch (NumberFormatException ex) {}
+            }
+        }
         for (Entry<Integer, Layer> e : layersMap.entrySet()) {
             Layer l = e.getValue();
@@ -422,4 +438,5 @@
                 continue;
             }
+
             l.setName(names.get(e.getKey()));
             layers.add(l);
Index: trunk/src/org/openstreetmap/josm/io/session/SessionWriter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/session/SessionWriter.java	(revision 5550)
+++ trunk/src/org/openstreetmap/josm/io/session/SessionWriter.java	(revision 5551)
@@ -172,4 +172,8 @@
             el.setAttribute("index", Integer.toString(index+1));
             el.setAttribute("name", layer.getName());
+            el.setAttribute("visible", Boolean.toString(layer.isVisible()));
+            if (layer.getOpacity() != 1.0) {
+                el.setAttribute("opacity", Double.toString(layer.getOpacity()));
+            }
             Set<Layer> deps = dependencies.get(layer);
             if (deps.size() > 0) {
