Index: trunk/src/org/openstreetmap/josm/data/Preferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 9616)
+++ trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 9617)
@@ -44,4 +44,6 @@
 
 import javax.json.Json;
+import javax.json.JsonArray;
+import javax.json.JsonArrayBuilder;
 import javax.json.JsonObject;
 import javax.json.JsonObjectBuilder;
@@ -1413,5 +1415,14 @@
             for (Object o: map.entrySet()) {
                 Entry e = (Entry) o;
-                object.add(e.getKey().toString(), e.getValue().toString());
+                Object evalue = e.getValue();
+                if (evalue instanceof Collection) {
+                    JsonArrayBuilder a = Json.createArrayBuilder();
+                    for (Object evo : (Collection)evalue) {
+                        a.add(evo.toString());
+                    }
+                    object.add(e.getKey().toString(), a.build());
+                } else {
+                    object.add(e.getKey().toString(), evalue.toString());
+                }
             }
             writer.writeObject(object.build());
@@ -1428,5 +1439,11 @@
             for (Entry<String, JsonValue> e: object.entrySet()) {
                 JsonValue value = e.getValue();
-                if (value instanceof JsonString) {
+                if (value instanceof JsonArray) {
+                    List <String> finalList = new ArrayList<String>();
+                    for(JsonString js: ((JsonArray)value).getValuesAs(JsonString.class)) {
+                        finalList.add(js.getString());
+                    }
+                    ret.put(e.getKey(), finalList);
+                } else if (value instanceof JsonString) {
                     // in some cases, when JsonValue.toString() is called, then additional quotation marks are left in value
                     ret.put(e.getKey(), ((JsonString) value).getString());
@@ -1497,6 +1514,6 @@
      *
      * The map value (a String) is converted to the field type. Supported
-     * types are: boolean, Boolean, int, Integer, double, Double, String and
-     * Map&lt;String, String&gt;.
+     * types are: boolean, Boolean, int, Integer, double, Double, String,
+     * Map&lt;String, String&gt; and Map&lt;String, List&lt;String&gt;&gt;.
      *
      * Only fields with annotation {@link pref} are taken into account.
Index: trunk/src/org/openstreetmap/josm/data/imagery/TemplatedWMSTileSource.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/imagery/TemplatedWMSTileSource.java	(revision 9616)
+++ trunk/src/org/openstreetmap/josm/data/imagery/TemplatedWMSTileSource.java	(revision 9617)
@@ -80,7 +80,4 @@
         handleTemplate();
         initProjection();
-        // FIXME: remove in September 2015, when ImageryPreferenceEntry.tileSize will be initialized to -1 instead to 256
-        // need to leave it as it is to keep compatibility between tested and latest JOSM versions
-        tileSize = WMSLayer.PROP_IMAGE_SIZE.get();
     }
 
Index: trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java	(revision 9616)
+++ trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java	(revision 9617)
@@ -625,15 +625,4 @@
     }
 
-    // FIXME: remove in September 2015, when ImageryPreferenceEntry.tileSize will be initialized to -1 instead to 256
-    // need to leave it as it is to keep compatiblity between tested and latest JOSM versions
-    @Override
-    public int getTileSize() {
-        TileMatrix matrix = getTileMatrix(1);
-        if (matrix == null) {
-            return 1;
-        }
-        return matrix.tileHeight;
-    }
-
     @Override
     public String getTileUrl(int zoom, int tilex, int tiley) {
