Index: /trunk/src/org/openstreetmap/josm/data/projection/CustomProjection.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/projection/CustomProjection.java	(revision 13181)
+++ /trunk/src/org/openstreetmap/josm/data/projection/CustomProjection.java	(revision 13182)
@@ -63,5 +63,4 @@
     protected String name;
     protected String code;
-    protected String cacheDir;
     protected Bounds bounds;
     private double metersPerUnitWMTS;
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/projection/AbstractProjectionChoice.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/projection/AbstractProjectionChoice.java	(revision 13181)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/projection/AbstractProjectionChoice.java	(revision 13182)
@@ -11,5 +11,5 @@
  * Super class for ProjectionChoice implementations.
  * <p>
- * Handles common parameters <code>name</code>, <code>id</code> and <code>cacheDir</code>.
+ * Handles common parameters <code>name</code> and <code>id</code>.
  */
 public abstract class AbstractProjectionChoice implements ProjectionChoice {
@@ -17,5 +17,4 @@
     protected String name;
     protected String id;
-    protected String cacheDir;
 
     /**
@@ -24,10 +23,10 @@
      * @param name short name of the projection choice as shown in the GUI
      * @param id unique identifier for the projection choice
-     * @param cacheDir a cache directory name
+     * @param cacheDir unused
+     * @deprecated use {@link #AbstractProjectionChoice(String, String)} instead
      */
+    @Deprecated
     public AbstractProjectionChoice(String name, String id, String cacheDir) {
-        this.name = name;
-        this.id = id;
-        this.cacheDir = cacheDir;
+        this(name, id);
     }
 
@@ -35,13 +34,10 @@
      * Constructs a new {@code AbstractProjectionChoice}.
      *
-     * Only for core projection choices, where chacheDir is the same as
-     * the second part of the id.
      * @param name short name of the projection choice as shown in the GUI
      * @param id unique identifier for the projection choice
      */
     public AbstractProjectionChoice(String name, String id) {
-        this(name, id, null);
-        if (!id.startsWith("core:")) throw new IllegalArgumentException(id+" does not start with core:");
-        this.cacheDir = id.substring(5);
+        this.name = name;
+        this.id = id;
     }
 
@@ -56,6 +52,14 @@
     }
 
+    /**
+     * Returns current projection code.
+     * @return current projection code
+     */
     public abstract String getCurrentCode();
 
+    /**
+     * Returns projection name.
+     * @return projection name
+     */
     public abstract String getProjectionName();
 
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java	(revision 13181)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java	(revision 13182)
@@ -80,5 +80,5 @@
      * WGS84: Directly use latitude / longitude values as x/y.
      */
-    public static final ProjectionChoice wgs84 = registerProjectionChoice(tr("WGS84 Geographic"), "core:wgs84", 4326, "epsg4326");
+    public static final ProjectionChoice wgs84 = registerProjectionChoice(tr("WGS84 Geographic"), "core:wgs84", 4326);
 
     /**
@@ -272,10 +272,25 @@
     }
 
+    /**
+     * Registers a new projection choice.
+     * @param name short name of the projection choice as shown in the GUI
+     * @param id short name of the projection choice as shown in the GUI
+     * @param epsg the unique numeric EPSG identifier for the projection
+     * @param cacheDir unused
+     * @return the registered {@link ProjectionChoice}
+     * @deprecated use {@link #registerProjectionChoice(String, String, Integer)} instead
+     */
+    @Deprecated
     public static ProjectionChoice registerProjectionChoice(String name, String id, Integer epsg, String cacheDir) {
-        ProjectionChoice pc = new SingleProjectionChoice(name, id, "EPSG:"+epsg, cacheDir);
-        registerProjectionChoice(pc);
-        return pc;
-    }
-
+        return registerProjectionChoice(name, id, epsg);
+    }
+
+    /**
+     * Registers a new projection choice.
+     * @param name short name of the projection choice as shown in the GUI
+     * @param id short name of the projection choice as shown in the GUI
+     * @param epsg the unique numeric EPSG identifier for the projection
+     * @return the registered {@link ProjectionChoice}
+     */
     private static ProjectionChoice registerProjectionChoice(String name, String id, Integer epsg) {
         ProjectionChoice pc = new SingleProjectionChoice(name, id, "EPSG:"+epsg);
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/projection/SingleProjectionChoice.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/projection/SingleProjectionChoice.java	(revision 13181)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/projection/SingleProjectionChoice.java	(revision 13182)
@@ -23,9 +23,10 @@
      * @param id unique identifier for the projection choice, e.g. "core:thisproj"
      * @param code the unique identifier for the projection, e.g. "EPSG:1234"
-     * @param cacheDir a cache directory name
+     * @param cacheDir unused
+     * @deprecated use {@link #SingleProjectionChoice(String, String, String)} instead
      */
+    @Deprecated
     public SingleProjectionChoice(String name, String id, String code, String cacheDir) {
-        super(name, id, cacheDir);
-        this.code = code;
+        this(name, id, code);
     }
 
