Index: applications/editors/josm/plugins/opendata/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- applications/editors/josm/plugins/opendata/.settings/org.eclipse.jdt.core.prefs	(revision 33517)
+++ applications/editors/josm/plugins/opendata/.settings/org.eclipse.jdt.core.prefs	(revision 33518)
@@ -3,6 +3,9 @@
 org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
 org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
 org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
 org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
 org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
@@ -19,5 +22,5 @@
 org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
 org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
 org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
 org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
@@ -51,4 +54,5 @@
 org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
 org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
 org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
 org.eclipse.jdt.core.compiler.problem.nullReference=warning
@@ -57,4 +61,5 @@
 org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
 org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
 org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
 org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
@@ -73,4 +78,5 @@
 org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
 org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
 org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
 org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
@@ -79,4 +85,7 @@
 org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
 org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
 org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
 org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
@@ -86,4 +95,5 @@
 org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
 org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
 org.eclipse.jdt.core.compiler.problem.unusedImport=warning
 org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
Index: applications/editors/josm/plugins/opendata/build.xml
===================================================================
--- applications/editors/josm/plugins/opendata/build.xml	(revision 33517)
+++ applications/editors/josm/plugins/opendata/build.xml	(revision 33518)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <project name="opendata" default="dist" basedir=".">
-    <property name="plugin.main.version" value="12463"/>
+    <property name="plugin.main.version" value="12649"/>
     <property name="plugin.author" value="Don-vip"/>
     <property name="plugin.class" value="org.openstreetmap.josm.plugins.opendata.OdPlugin"/>
Index: applications/editors/josm/plugins/opendata/modules/fr.datagouvfr/src/org/openstreetmap/josm/plugins/opendata/modules/fr/datagouvfr/datasets/administration/GeoFlaHandler.java
===================================================================
--- applications/editors/josm/plugins/opendata/modules/fr.datagouvfr/src/org/openstreetmap/josm/plugins/opendata/modules/fr/datagouvfr/datasets/administration/GeoFlaHandler.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/modules/fr.datagouvfr/src/org/openstreetmap/josm/plugins/opendata/modules/fr/datagouvfr/datasets/administration/GeoFlaHandler.java	(revision 33518)
@@ -7,6 +7,5 @@
 import java.util.List;
 
-import org.apache.commons.lang3.text.WordUtils;
-import org.openstreetmap.josm.Main;
+import org.apache.commons.text.WordUtils;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
@@ -17,4 +16,5 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.plugins.opendata.modules.fr.datagouvfr.datasets.DataGouvDataSetHandler;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Pair;
 
@@ -24,7 +24,7 @@
  */
 public class GeoFlaHandler extends DataGouvDataSetHandler {
-    
+
     private static final String ADMIN_LEVEL = "admin_level";
-    
+
     /**
      * Constructs a new {@code GeoFlaHandler}.
@@ -36,5 +36,5 @@
             setLocalPortalURL("http://professionnels.ign.fr/geofla#tab-3");
         } catch (MalformedURLException e) {
-            Main.error(e);
+            Logging.error(e);
         }
     }
@@ -49,5 +49,5 @@
         return isDepartementFile(filename) || isCommuneFile(filename) || isCantonFile(filename) || isArrondissementFile(filename);
     }
-        
+
     protected boolean isDepartementFile(String filename) {
         return acceptsShpMifFilename(filename, "DEPARTEMENT") || acceptsShpMifFilename(filename, "LIMITE_DEPARTEMENT");
@@ -96,7 +96,7 @@
                 } else if (isDepartementFile(filename) || "Limite de département".equalsIgnoreCase(nature)) {
                     p.put(ADMIN_LEVEL, "6");
-                } else if(isArrondissementFile(filename) || "Limite d'arrondissement".equalsIgnoreCase(nature)) {
+                } else if (isArrondissementFile(filename) || "Limite d'arrondissement".equalsIgnoreCase(nature)) {
                     p.put(ADMIN_LEVEL, "7");
-                } else if(isCommuneFile(filename)) {
+                } else if (isCommuneFile(filename)) {
                     p.put(ADMIN_LEVEL, "8");
                 }
@@ -135,5 +135,5 @@
                             }
                         } catch (NumberFormatException e) {
-                            Main.warn("Invalid population: "+population);
+                            Logging.warn("Invalid population: "+population);
                         }
                     }
@@ -145,5 +145,5 @@
         }
     }
-    
+
     protected static boolean hasKeyIgnoreCase(OsmPrimitive p, String ... strings) {
         return getIgnoreCase(p, strings) != null;
@@ -167,5 +167,5 @@
         }
     }
-    
+
     protected static String getAndRemoveIgnoreCase(OsmPrimitive p, String ... strings) {
         String result = getIgnoreCase(p, strings);
@@ -192,15 +192,15 @@
                         dptCode = "976";
                     } else {
-                        Main.error("Unknown French department: "+dptName);
+                        Logging.error("Unknown French department: "+dptName);
                     }
                 }
                 return getLatLonByDptCode(new EastNorth(Double.parseDouble(x), Double.parseDouble(y)), dptCode, false);
             } catch (NumberFormatException e) {
-                Main.error(e);
+                Logging.error(e);
             }
         }
         return null;
     }
-    
+
     private Pair<String, URL> getGeoflaURL(String name, String urlSuffix) throws MalformedURLException {
         return new Pair<>(name, new URL("https://wxs-telechargement.ign.fr/oikr5jryiph0iwhw36053ptm/telechargement/inspire/"+urlSuffix));
@@ -239,5 +239,5 @@
             result.add(getGeoflaURL("2014 Départements Mayotte",                  "GEOFLA_THEME-DEPARTEMENTS_2014_GEOFLA_2-0_DEPARTEMENT_SHP_RGM04UTM38S_D976_2014-12-05/file/GEOFLA_2-0_DEPARTEMENT_SHP_RGM04UTM38S_D976_2014-12-05.7z"));
         } catch (MalformedURLException e) {
-            Main.error(e);
+            Logging.error(e);
         }
         return result;
Index: applications/editors/josm/plugins/opendata/modules/fr.datagouvfr/src/org/openstreetmap/josm/plugins/opendata/modules/fr/datagouvfr/datasets/agriculture/RegistreParcellaireHandler.java
===================================================================
--- applications/editors/josm/plugins/opendata/modules/fr.datagouvfr/src/org/openstreetmap/josm/plugins/opendata/modules/fr/datagouvfr/datasets/agriculture/RegistreParcellaireHandler.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/modules/fr.datagouvfr/src/org/openstreetmap/josm/plugins/opendata/modules/fr/datagouvfr/datasets/agriculture/RegistreParcellaireHandler.java	(revision 33518)
@@ -9,5 +9,5 @@
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry;
+import org.openstreetmap.josm.data.preferences.sources.ExtendedSourceEntry;
 import org.openstreetmap.josm.plugins.opendata.core.datasets.fr.FrenchAdministrativeUnit;
 import org.openstreetmap.josm.plugins.opendata.modules.fr.datagouvfr.datasets.DataGouvDataSetHandler;
Index: applications/editors/josm/plugins/opendata/modules/fr.datagouvfr/src/org/openstreetmap/josm/plugins/opendata/modules/fr/datagouvfr/datasets/hydrologie/EauxDeSurfaceHandler.java
===================================================================
--- applications/editors/josm/plugins/opendata/modules/fr.datagouvfr/src/org/openstreetmap/josm/plugins/opendata/modules/fr/datagouvfr/datasets/hydrologie/EauxDeSurfaceHandler.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/modules/fr.datagouvfr/src/org/openstreetmap/josm/plugins/opendata/modules/fr/datagouvfr/datasets/hydrologie/EauxDeSurfaceHandler.java	(revision 33518)
@@ -14,8 +14,8 @@
 import java.util.regex.Pattern;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.plugins.opendata.core.io.archive.DefaultArchiveHandler;
 import org.openstreetmap.josm.plugins.opendata.modules.fr.datagouvfr.datasets.DataGouvDataSetHandler;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Pair;
 
@@ -127,5 +127,5 @@
                     }
                 } catch (Exception e) {
-                    Main.error(e);
+                    Logging.error(e);
                 }
             }
Index: applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/ToulouseModule.java
===================================================================
--- applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/ToulouseModule.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/ToulouseModule.java	(revision 33518)
@@ -6,7 +6,7 @@
 import java.util.TreeSet;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.io.OsmTransferException;
@@ -109,7 +109,7 @@
         handlers.add(PointsLumineuxHandler.class);
     }
-    
+
     public static final DataSet data = new DataSet();
-    
+
     private static final Collection<Relation> getBoundaries(int admin_level) {
         Collection<Relation> result = new TreeSet<>(new Comparator<Relation>() {
@@ -127,5 +127,5 @@
         synchronized (data) {
             for (Relation r : data.getRelations()) {
-                if (r.hasTag("admin_level", Integer.toString(admin_level)) && 
+                if (r.hasTag("admin_level", Integer.toString(admin_level)) &&
                         (r.hasKey("name") || r.hasKey("ref") || r.hasKey("description"))) {
                     result.add(r);
@@ -135,5 +135,5 @@
         return result;
     }
-    
+
     public static final void downloadData() {
         synchronized (data) {
@@ -141,5 +141,5 @@
                 for (final ToulouseDataSetHandler handler : new ToulouseDataSetHandler[]{
                         new CommuneHandler(), new SecteursHandler(), new QuartiersHandler()}) {
-                    Main.worker.submit(new Runnable() {
+                    MainApplication.worker.submit(new Runnable() {
                         @Override
                         public void run() {
@@ -160,9 +160,9 @@
         }
     }
-    
+
     public static final Collection<Relation> getMunicipalities() {
         return getBoundaries(8);
     }
-    
+
     public static final Collection<Relation> getSectors() {
         return getBoundaries(10);
Index: applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/ToulouseDataSetHandler.java
===================================================================
--- applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/ToulouseDataSetHandler.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/ToulouseDataSetHandler.java	(revision 33518)
@@ -10,5 +10,4 @@
 import java.util.Collections;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -27,4 +26,5 @@
 import org.openstreetmap.josm.data.osm.event.TagsChangedEvent;
 import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.plugins.opendata.OdPlugin;
 import org.openstreetmap.josm.plugins.opendata.core.datasets.DataSetCategory;
@@ -142,5 +142,5 @@
         public void actionPerformed(ActionEvent e) {
             final String baseName = OdPlugin.getInstance().getDialog().getDataLayer().getName();
-            final DataSet baseDs = Main.getLayerManager().getEditDataSet();
+            final DataSet baseDs = MainApplication.getLayerManager().getEditDataSet();
             for (OsmPrimitive boundary : getBoundaries()) {
                 DataSet data = new DataSet();
@@ -162,5 +162,5 @@
                         name = boundary.get("description");
                     }
-                    Main.getLayerManager().addLayer(new OdDataLayer(data, baseName+"/"+name, null, ToulouseDataSetHandler.this));
+                    MainApplication.getLayerManager().addLayer(new OdDataLayer(data, baseName+"/"+name, null, ToulouseDataSetHandler.this));
                 }
             }
Index: applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/associations/Club3eAgeHandler.java
===================================================================
--- applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/associations/Club3eAgeHandler.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/associations/Club3eAgeHandler.java	(revision 33518)
@@ -2,5 +2,5 @@
 package org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.associations;
 
-import org.apache.commons.lang3.text.WordUtils;
+import org.apache.commons.text.WordUtils;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
@@ -14,5 +14,5 @@
         setCategory(CAT_ASSOCIATIONS);
     }
-    
+
     @Override
     public boolean acceptsFilename(String filename) {
Index: applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/culture/MuseeHandler.java
===================================================================
--- applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/culture/MuseeHandler.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/culture/MuseeHandler.java	(revision 33518)
@@ -2,5 +2,5 @@
 package org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.culture;
 
-import org.apache.commons.lang3.text.WordUtils;
+import org.apache.commons.text.WordUtils;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
Index: applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/enfance/CrechesHandler.java
===================================================================
--- applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/enfance/CrechesHandler.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/enfance/CrechesHandler.java	(revision 33518)
@@ -2,5 +2,5 @@
 package org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.enfance;
 
-import org.apache.commons.lang3.text.WordUtils;
+import org.apache.commons.text.WordUtils;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
Index: applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/enfance/EcoleElementaireHandler.java
===================================================================
--- applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/enfance/EcoleElementaireHandler.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/enfance/EcoleElementaireHandler.java	(revision 33518)
@@ -2,5 +2,5 @@
 package org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.enfance;
 
-import org.apache.commons.lang3.text.WordUtils;
+import org.apache.commons.text.WordUtils;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
@@ -13,5 +13,5 @@
         setWikiPage("Écoles élémentaires publiques");
         setCategory(CAT_ENFANCE);
-        for (String forbidden : new String[]{"maternelle","primaire","collège","lycée","secondaire"}) {
+        for (String forbidden : new String[]{"maternelle", "primaire", "collège", "lycée", "secondaire"}) {
             addForbiddenTag("school:FR="+forbidden);
         }
Index: applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/services/MarchesPleinVentHandler.java
===================================================================
--- applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/services/MarchesPleinVentHandler.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/services/MarchesPleinVentHandler.java	(revision 33518)
@@ -2,5 +2,5 @@
 package org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.services;
 
-import org.apache.commons.lang3.text.WordUtils;
+import org.apache.commons.text.WordUtils;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
@@ -29,16 +29,16 @@
                 @Override public String replace(String value) {
                     return WordUtils.capitalizeFully(value).replace(", ", "").replace("MarchÉ", "Marché");
-                }});
+                } });
             n.put("amenity", "marketplace");
             replace(n, "Type", "note");
             String hours = "";
             for (String[] day : new String[][]{
-                    new String[]{"Lundi","Mo"},
-                    new String[]{"mardi","Tu"},
-                    new String[]{"mercredi","We"},
-                    new String[]{"jeudi","Th"},
-                    new String[]{"vendredi","Fr"},
-                    new String[]{"samedi","Sa"},
-                    new String[]{"dimanche","Su"}
+                    new String[]{"Lundi", "Mo"},
+                    new String[]{"mardi", "Tu"},
+                    new String[]{"mercredi", "We"},
+                    new String[]{"jeudi", "Th"},
+                    new String[]{"vendredi", "Fr"},
+                    new String[]{"samedi", "Sa"},
+                    new String[]{"dimanche", "Su"}
             }) {
                 String value = n.get(day[0]);
Index: applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/transport/HorodateurHandler.java
===================================================================
--- applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/transport/HorodateurHandler.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/transport/HorodateurHandler.java	(revision 33518)
@@ -5,5 +5,5 @@
 import java.util.regex.Pattern;
 
-import org.apache.commons.lang3.text.WordUtils;
+import org.apache.commons.text.WordUtils;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
@@ -23,5 +23,5 @@
         return acceptsCsvKmzTabFilename(filename, "Horodateur");
     }
-    
+
     private String parseHour(String hour) {
         String s = hour.replaceFirst("[hH]", ":");
@@ -31,5 +31,5 @@
         return s;
     }
-    
+
     protected String parseOpeningHours(String horaire) {
         final String hour = "\\p{Digit}{1,2}[hH]\\p{Digit}{0,2}";
Index: applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/transport/VeloToulouseHandler.java
===================================================================
--- applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/transport/VeloToulouseHandler.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/transport/VeloToulouseHandler.java	(revision 33518)
@@ -2,5 +2,5 @@
 package org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.transport;
 
-import org.apache.commons.lang3.text.WordUtils;
+import org.apache.commons.text.WordUtils;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
Index: applications/editors/josm/plugins/opendata/src/org/geotools/data/shapefile/files/TabFiles.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/geotools/data/shapefile/files/TabFiles.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/geotools/data/shapefile/files/TabFiles.java	(revision 33518)
@@ -47,5 +47,5 @@
 
 import org.geotools.data.DataUtilities;
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
@@ -177,5 +177,5 @@
                 return files[0].toURI().toURL();
             } catch (MalformedURLException e) {
-                Main.error(e);
+                Logging.error(e);
             }
         }
@@ -213,5 +213,5 @@
                 StringBuilder sb = new StringBuilder("The following locker still has a lock: ");
                 sb.append(locker);
-                Main.error(sb.toString());
+                Logging.error(sb.toString());
             }
         }
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/OdPlugin.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/OdPlugin.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/OdPlugin.java	(revision 33518)
@@ -16,4 +16,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MainMenu;
 import org.openstreetmap.josm.gui.MapFrame;
@@ -75,23 +76,15 @@
         }
 
-        menu = Main.main.menu.dataMenu;
-
-        new Thread(new Runnable() {
-            @Override
-            public void run() {
-                // Load modules in new thread
-                loadModules();
-                // Add menu in EDT
-                GuiHelper.runInEDT(new Runnable() {
-                    @Override
-                    public void run() {
-                        buildMenu();
-                    }
-                });
-            }
+        menu = MainApplication.getMenu().dataMenu;
+
+        new Thread(() -> {
+            // Load modules in new thread
+            loadModules();
+            // Add menu in EDT
+            GuiHelper.runInEDT(() -> buildMenu());
         }).start();
 
         // Add download task
-        Main.main.menu.openLocation.addDownloadTaskClass(DownloadDataTask.class);
+        MainApplication.getMenu().openLocation.addDownloadTaskClass(DownloadDataTask.class);
         // Delete previous temp dirs if any (old plugin versions did not remove them correctly)
         OdUtils.deletePreviousTempDirs();
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/actions/DownloadDataAction.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/actions/DownloadDataAction.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/actions/DownloadDataAction.java	(revision 33518)
@@ -7,6 +7,6 @@
 import javax.swing.Action;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.plugins.opendata.core.modules.Module;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
@@ -15,5 +15,5 @@
 
     private final URL url;
-    
+
     public DownloadDataAction(Module module, String name, URL url) {
         super(false);
@@ -24,8 +24,8 @@
         this.url = url;
     }
-    
+
     @Override
     public void actionPerformed(ActionEvent e) {
-        Main.main.menu.openLocation.openUrl(true, url.toString());
+        MainApplication.getMenu().openLocation.openUrl(true, url.toString());
     }
 }
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/actions/DownloadDataTask.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/actions/DownloadDataTask.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/actions/DownloadDataTask.java	(revision 33518)
@@ -14,4 +14,5 @@
 import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask;
 import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -39,5 +40,5 @@
         currentBounds = null;
         if (handler == null || !handler.hasLicenseToBeAccepted() || askLicenseAgreement(handler.getLicense())) {
-            return Main.worker.submit(downloadTask);
+            return MainApplication.worker.submit(downloadTask);
         } else {
             return null;
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/actions/OpenLinkAction.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/actions/OpenLinkAction.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/actions/OpenLinkAction.java	(revision 33518)
@@ -10,8 +10,8 @@
 import javax.swing.Action;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.plugins.opendata.core.OdConstants;
 import org.openstreetmap.josm.plugins.opendata.core.util.OdUtils;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.OpenBrowser;
 
@@ -19,5 +19,5 @@
 
     private URL url;
-    
+
     public OpenLinkAction(URL url, String icon24Name, String title, String description) {
         super(title, null, description, null, false);
@@ -29,9 +29,9 @@
     public void actionPerformed(ActionEvent e) {
         try {
-            Main.info("Opening "+url);
+            Logging.info("Opening "+url);
             OpenBrowser.displayUrl(url.toURI());
         } catch (URISyntaxException e1) {
             try {
-                Main.error(e1.getLocalizedMessage());
+                Logging.error(e1.getLocalizedMessage());
                 int index = e1.getIndex();
                 if (index > -1) {
@@ -39,9 +39,9 @@
                     s = url.toString().replace(s, URLEncoder.encode(s, OdConstants.UTF8));
                     URI uri = new URI(s);
-                    Main.info("Opening "+uri);
+                    Logging.info("Opening "+uri);
                     OpenBrowser.displayUrl(uri);
                 }
             } catch (Exception e2) {
-                Main.error(e2);
+                Logging.error(e2);
             }
         }
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/AbstractDataSetHandler.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/AbstractDataSetHandler.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/AbstractDataSetHandler.java	(revision 33518)
@@ -18,5 +18,5 @@
 import org.openstreetmap.josm.data.osm.IPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry;
+import org.openstreetmap.josm.data.preferences.sources.ExtendedSourceEntry;
 import org.openstreetmap.josm.io.AbstractReader;
 import org.openstreetmap.josm.plugins.opendata.core.OdConstants;
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/ModulePreference.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/ModulePreference.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/ModulePreference.java	(revision 33518)
@@ -42,4 +42,5 @@
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
@@ -238,19 +239,13 @@
     public void readLocalModuleInformation() {
         final ReadLocalModuleInformationTask task = new ReadLocalModuleInformationTask();
-        Runnable r = new Runnable() {
-            @Override
-            public void run() {
-                if (task.isCanceled()) return;
-                SwingUtilities.invokeLater(new Runnable() {
-                    @Override
-                    public void run() {
-                        model.setAvailableModules(task.getAvailableModules());
-                        pnlModulePreferences.refreshView();
-                    }
-                });
-            }
+        Runnable r = () -> {
+            if (task.isCanceled()) return;
+            SwingUtilities.invokeLater(() -> {
+                model.setAvailableModules(task.getAvailableModules());
+                pnlModulePreferences.refreshView();
+            });
         };
-        Main.worker.submit(task);
-        Main.worker.submit(r);
+        MainApplication.worker.submit(task);
+        MainApplication.worker.submit(r);
     }
 
@@ -270,19 +265,13 @@
         public void actionPerformed(ActionEvent e) {
             final ReadRemoteModuleInformationTask task = new ReadRemoteModuleInformationTask(OdPreferenceSetting.getModuleSites());
-            Runnable continuation = new Runnable() {
-                @Override
-                public void run() {
-                    if (task.isCanceled()) return;
-                    SwingUtilities.invokeLater(new Runnable() {
-                        @Override
-                        public void run() {
-                            model.updateAvailableModules(task.getAvailableModules());
-                            pnlModulePreferences.refreshView();
-                        }
-                    });
-                }
+            Runnable continuation = () -> {
+                if (task.isCanceled()) return;
+                SwingUtilities.invokeLater(() -> {
+                    model.updateAvailableModules(task.getAvailableModules());
+                    pnlModulePreferences.refreshView();
+                });
             };
-            Main.worker.submit(task);
-            Main.worker.submit(continuation);
+            MainApplication.worker.submit(task);
+            MainApplication.worker.submit(continuation);
         }
     }
@@ -319,16 +308,11 @@
 
         protected void alertNothingToUpdate() {
-            GuiHelper.runInEDTAndWait(new Runnable() {
-                @Override
-                public void run() {
-                    HelpAwareOptionPane.showOptionDialog(
-                            pnlModulePreferences,
-                            tr("All installed modules are up to date. JOSM does not have to download newer versions."),
-                            tr("Modules up to date"),
-                            JOptionPane.INFORMATION_MESSAGE,
-                            null // FIXME: provide help context
-                            );
-                }
-            });
+            GuiHelper.runInEDTAndWait(() -> HelpAwareOptionPane.showOptionDialog(
+                    pnlModulePreferences,
+                    tr("All installed modules are up to date. JOSM does not have to download newer versions."),
+                    tr("Modules up to date"),
+                    JOptionPane.INFORMATION_MESSAGE,
+                    null // FIXME: provide help context
+                    ));
         }
 
@@ -348,50 +332,44 @@
             // to be run asynchronously after the module download
             //
-            final Runnable moduleDownloadContinuation = new Runnable() {
-                @Override
-                public void run() {
-                    if (moduleDownloadTask.isCanceled())
-                        return;
-                    notifyDownloadResults(moduleDownloadTask);
-                    model.refreshLocalModuleVersion(moduleDownloadTask.getDownloadedModules());
-                    model.clearPendingModules(moduleDownloadTask.getDownloadedModules());
-                    GuiHelper.runInEDT(new Runnable() {
-                        @Override
-                        public void run() {
-                            pnlModulePreferences.refreshView();
-                        }
-                    });
-                }
+            final Runnable moduleDownloadContinuation = () -> {
+                if (moduleDownloadTask.isCanceled())
+                    return;
+                notifyDownloadResults(moduleDownloadTask);
+                model.refreshLocalModuleVersion(moduleDownloadTask.getDownloadedModules());
+                model.clearPendingModules(moduleDownloadTask.getDownloadedModules());
+                GuiHelper.runInEDT(new Runnable() {
+                    @Override
+                    public void run() {
+                        pnlModulePreferences.refreshView();
+                    }
+                });
             };
 
             // to be run asynchronously after the module list download
             //
-            final Runnable moduleInfoDownloadContinuation = new Runnable() {
-                @Override
-                public void run() {
-                    if (moduleInfoDownloadTask.isCanceled())
-                        return;
-                    model.updateAvailableModules(moduleInfoDownloadTask.getAvailableModules());
-                    // select modules which actually have to be updated
-                    //
-                    Iterator<ModuleInformation> it = toUpdate.iterator();
-                    while (it.hasNext()) {
-                        ModuleInformation pi = it.next();
-                        if (!pi.isUpdateRequired()) {
-                            it.remove();
-                        }
-                    }
-                    if (toUpdate.isEmpty()) {
-                        alertNothingToUpdate();
-                        return;
-                    }
-                    moduleDownloadTask.setModulesToDownload(toUpdate);
-                    Main.worker.submit(moduleDownloadTask);
-                    Main.worker.submit(moduleDownloadContinuation);
+            final Runnable moduleInfoDownloadContinuation = () -> {
+                if (moduleInfoDownloadTask.isCanceled())
+                    return;
+                model.updateAvailableModules(moduleInfoDownloadTask.getAvailableModules());
+                // select modules which actually have to be updated
+                //
+                Iterator<ModuleInformation> it = toUpdate.iterator();
+                while (it.hasNext()) {
+                    ModuleInformation pi = it.next();
+                    if (!pi.isUpdateRequired()) {
+                        it.remove();
+                    }
                 }
+                if (toUpdate.isEmpty()) {
+                    alertNothingToUpdate();
+                    return;
+                }
+                moduleDownloadTask.setModulesToDownload(toUpdate);
+                MainApplication.worker.submit(moduleDownloadTask);
+                MainApplication.worker.submit(moduleDownloadContinuation);
             };
 
-            Main.worker.submit(moduleInfoDownloadTask);
-            Main.worker.submit(moduleInfoDownloadContinuation);
+            MainApplication.worker.submit(moduleInfoDownloadTask);
+            MainApplication.worker.submit(moduleInfoDownloadContinuation);
         }
     }
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/OdDialog.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/OdDialog.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/OdDialog.java	(revision 33518)
@@ -17,6 +17,6 @@
 import javax.swing.tree.TreeModel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.dialogs.ToggleDialog;
@@ -50,5 +50,5 @@
         @Override
         public void actionPerformed(ActionEvent e) {
-            if (Main.getLayerManager().getEditLayer() instanceof OdLayer) {
+            if (MainApplication.getLayerManager().getEditLayer() instanceof OdLayer) {
                 dataLayer.downloadOsmData();
                 diffButton.setEnabled(dataLayer.osmLayer != null);
@@ -76,5 +76,5 @@
         @Override
         public void actionPerformed(ActionEvent e) {
-            if (Main.getLayerManager().getEditLayer() instanceof OdLayer) {
+            if (MainApplication.getLayerManager().getEditLayer() instanceof OdLayer) {
                 dataLayer.makeDiff();
             }
@@ -108,5 +108,5 @@
             @Override
             public void mousePressed(MouseEvent e) {
-                if (Main.getLayerManager().getEditLayer() instanceof OdLayer) {
+                if (MainApplication.getLayerManager().getEditLayer() instanceof OdLayer) {
                     JPopupMenu popup = new JPopupMenu();
                     for (JosmAction tool : dataLayer.handler.getTools()) {
@@ -125,5 +125,5 @@
         createLayout(new JTree(treeModel), true, buttons);
 
-        Main.getLayerManager().addActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().addActiveLayerChangeListener(this);
     }
 
@@ -136,5 +136,5 @@
     @Override
     public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
-        Layer newLayer = Main.getLayerManager().getActiveLayer();
+        Layer newLayer = MainApplication.getLayerManager().getActiveLayer();
         if (newLayer instanceof OdLayer) {
             dataLayer = ((OdLayer) newLayer).getDataLayer();
@@ -158,5 +158,5 @@
     public void destroy() {
         super.destroy();
-        Main.getLayerManager().removeActiveLayerChangeListener(this);
+        MainApplication.getLayerManager().removeActiveLayerChangeListener(this);
     }
 
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/OdPreferenceSetting.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/OdPreferenceSetting.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/OdPreferenceSetting.java	(revision 33518)
@@ -23,4 +23,5 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
@@ -151,40 +152,37 @@
         // this is the task which will run *after* the modules are downloaded
         //
-        final Runnable continuation = new Runnable() {
-            @Override
-            public void run() {
-                boolean requiresRestart = false;
-                if (task != null && !task.isCanceled()) {
-                    if (!task.getDownloadedModules().isEmpty()) {
-                        requiresRestart = true;
-                    }
+        final Runnable continuation = () -> {
+            boolean requiresRestart = false;
+            if (task != null && !task.isCanceled()) {
+                if (!task.getDownloadedModules().isEmpty()) {
+                    requiresRestart = true;
                 }
-
-                // build the messages. We only display one message, including the status
-                // information from the module download task and - if necessary - a hint
-                // to restart JOSM
-                //
-                StringBuilder sb = new StringBuilder();
-                sb.append("<html>");
-                if (task != null && !task.isCanceled()) {
-                    sb.append(ModulePreference.buildDownloadSummary(task));
-                }
-                if (requiresRestart) {
-                    sb.append(tr("You have to restart JOSM for some settings to take effect."));
-                }
-                sb.append("</html>");
-
-                // display the message, if necessary
-                //
-                if ((task != null && !task.isCanceled()) || requiresRestart) {
-                    JOptionPane.showMessageDialog(
-                            Main.parent,
-                            sb.toString(),
-                            tr("Warning"),
-                            JOptionPane.WARNING_MESSAGE
-                            );
-                }
-                Main.parent.repaint();
-            }
+            }
+
+            // build the messages. We only display one message, including the status
+            // information from the module download task and - if necessary - a hint
+            // to restart JOSM
+            //
+            StringBuilder sb = new StringBuilder();
+            sb.append("<html>");
+            if (task != null && !task.isCanceled()) {
+                sb.append(ModulePreference.buildDownloadSummary(task));
+            }
+            if (requiresRestart) {
+                sb.append(tr("You have to restart JOSM for some settings to take effect."));
+            }
+            sb.append("</html>");
+
+            // display the message, if necessary
+            //
+            if ((task != null && !task.isCanceled()) || requiresRestart) {
+                JOptionPane.showMessageDialog(
+                        Main.parent,
+                        sb.toString(),
+                        tr("Warning"),
+                        JOptionPane.WARNING_MESSAGE
+                        );
+            }
+            Main.parent.repaint();
         };
 
@@ -193,13 +191,6 @@
             // by the remaining "save preferences" activites run on the Swing EDT.
             //
-            Main.worker.submit(task);
-            Main.worker.submit(
-                    new Runnable() {
-                        @Override
-                        public void run() {
-                            SwingUtilities.invokeLater(continuation);
-                        }
-                    }
-                    );
+            MainApplication.worker.submit(task);
+            MainApplication.worker.submit(() -> SwingUtilities.invokeLater(continuation));
         } else {
             // no need for asynchronous activities. Simply run the remaining "save preference"
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/ProjectionChooser.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/ProjectionChooser.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/ProjectionChooser.java	(revision 33518)
@@ -15,5 +15,4 @@
 import javax.swing.JPanel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.coor.CoordinateFormat;
@@ -24,4 +23,5 @@
 import org.openstreetmap.josm.gui.preferences.projection.SubPrefsOptions;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
@@ -151,5 +151,5 @@
         ProjectionChoice pc = (ProjectionChoice) projectionCombo.getSelectedItem();
         if (pc != null) {
-            Main.info("Chosen projection: "+pc+" ("+pc.getProjection()+")");
+            Logging.info("Chosen projection: "+pc+" ("+pc.getProjection()+")");
             return pc.getProjection();
         } else {
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/AbstractImporter.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/AbstractImporter.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/AbstractImporter.java	(revision 33518)
@@ -10,5 +10,4 @@
 import java.io.InputStream;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -22,15 +21,16 @@
 import org.openstreetmap.josm.plugins.opendata.core.modules.Module;
 import org.openstreetmap.josm.plugins.opendata.core.modules.ModuleHandler;
+import org.openstreetmap.josm.tools.Logging;
 
 public abstract class AbstractImporter extends OsmImporter {
-    
+
     protected AbstractDataSetHandler handler;
-    
+
     protected File file;
-    
+
     public AbstractImporter(ExtensionFileFilter filter) {
         super(filter);
     }
-    
+
     protected final AbstractDataSetHandler findDataSetHandler(File file) {
         for (Module module : ModuleHandler.moduleList) {
@@ -55,5 +55,5 @@
             importData(in, file, progressMonitor);
         } catch (FileNotFoundException e) {
-            Main.error(e);
+            Logging.error(e);
             throw new IOException(tr("File ''{0}'' does not exist.", file.getName()), e);
         }
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/NeptuneReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/NeptuneReader.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/NeptuneReader.java	(revision 33518)
@@ -23,5 +23,4 @@
 import javax.xml.validation.Validator;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -35,4 +34,5 @@
 import org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler;
 import org.openstreetmap.josm.plugins.opendata.core.datasets.fr.FrenchConstants;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
@@ -103,15 +103,15 @@
                 Validator validator = schema.newValidator();
                 validator.validate(xmlFile);
-                Main.info(xmlFile.getSystemId() + " is valid");
+                Logging.info(xmlFile.getSystemId() + " is valid");
                 return true;
             } catch (SAXException e) {
-                Main.error(xmlFile.getSystemId() + " is NOT valid");
-                Main.error("Reason: " + e.getLocalizedMessage());
+                Logging.error(xmlFile.getSystemId() + " is NOT valid");
+                Logging.error("Reason: " + e.getLocalizedMessage());
             } catch (IOException e) {
-                Main.error(xmlFile.getSystemId() + " is NOT valid");
-                Main.error("Reason: " + e.getLocalizedMessage());
+                Logging.error(xmlFile.getSystemId() + " is NOT valid");
+                Logging.error("Reason: " + e.getLocalizedMessage());
             }
         } catch (IOException e) {
-            Main.error(e);
+            Logging.error(e);
         }
 
@@ -135,5 +135,5 @@
         p.put("ref:neptune", object.getObjectId());
         if (tridentObjects.put(object.getObjectId(), p) != null) {
-            Main.error("Trident object duplicated !!! : "+object.getObjectId());
+            Logging.error("Trident object duplicated !!! : "+object.getObjectId());
         }
     }
@@ -192,5 +192,5 @@
             r.put(OSM_ROUTE_MASTER, OSM_TROLLEYBUS); break;
         default:
-            Main.warn("Unsupported transport mode: "+line.getTransportModeName());
+            Logging.warn("Unsupported transport mode: "+line.getTransportModeName());
         }
         r.put("ref", line.getNumber());
@@ -263,5 +263,5 @@
                         StopArea child = findStopArea(childId);
                         if (child == null) {
-                            Main.warn("Cannot find StopArea: "+childId);
+                            Logging.warn("Cannot find StopArea: "+childId);
                         } else {
                             if (child.getStopAreaExtension().getAreaType().equals(ChouetteAreaType.BOARDING_POSITION)) {
@@ -270,5 +270,5 @@
                                         StopPoint grandchild = findStopPoint(grandchildId);
                                         if (grandchild == null) {
-                                            Main.warn("Cannot find StopPoint: "+grandchildId);
+                                            Logging.warn("Cannot find StopPoint: "+grandchildId);
                                         } else {
                                             if (grandchild.getLongLatType().equals(LongLatTypeType.WGS_84)) {
@@ -276,9 +276,9 @@
                                                 stopArea.addMember(new RelationMember(OSM_PLATFORM, platform));
                                             } else {
-                                                Main.warn("Unsupported long/lat type: "+grandchild.getLongLatType());
+                                                Logging.warn("Unsupported long/lat type: "+grandchild.getLongLatType());
                                             }
                                         }
                                     } else {
-                                        Main.warn("Unsupported grandchild: "+grandchildId);
+                                        Logging.warn("Unsupported grandchild: "+grandchildId);
                                     }
                                 }
@@ -286,7 +286,7 @@
                                 AreaCentroid areaCentroid = findAreaCentroid(centroidId);
                                 if (areaCentroid == null) {
-                                    Main.warn("Cannot find AreaCentroid: "+centroidId);
+                                    Logging.warn("Cannot find AreaCentroid: "+centroidId);
                                 } else if (!areaCentroid.getLongLatType().equals(LongLatTypeType.WGS_84)) {
-                                    Main.warn("Unsupported long/lat type: "+areaCentroid.getLongLatType());
+                                    Logging.warn("Unsupported long/lat type: "+areaCentroid.getLongLatType());
                                 } else {
                                     for (RelationMember member : stopArea.getMembers()) {
@@ -298,5 +298,5 @@
                                 }
                             } else {
-                                Main.warn("Unsupported child type: "+child.getStopAreaExtension().getAreaType());
+                                Logging.warn("Unsupported child type: "+child.getStopAreaExtension().getAreaType());
                             }
                         }
@@ -305,12 +305,12 @@
                         StopPoint child = findStopPoint(childId);
                         if (child == null) {
-                            Main.warn("Cannot find StopPoint: "+childId);
+                            Logging.warn("Cannot find StopPoint: "+childId);
                         } else {
                             // TODO
-                            Main.info("TODO: handle StopPoint "+childId);
+                            Logging.info("TODO: handle StopPoint "+childId);
                         }
 
                     } else {
-                        Main.warn("Unsupported child: "+childId);
+                        Logging.warn("Unsupported child: "+childId);
                     }
                 }
@@ -318,5 +318,5 @@
                 //Main.info("skipping StopArea with type "+sa.getStopAreaExtension().getAreaType()+": "+sa.getObjectId());
             } else {
-                Main.warn("Unsupported StopArea type: "+sa.getStopAreaExtension().getAreaType());
+                Logging.warn("Unsupported StopArea type: "+sa.getStopAreaExtension().getAreaType());
             }
         }
@@ -331,5 +331,5 @@
                 PTLinkType ptlink = findPtLink(id);
                 if (ptlink == null) {
-                    Main.warn("Cannot find PTLinkType: "+id);
+                    Logging.warn("Cannot find PTLinkType: "+id);
                 } else {
                     /*StopPoint start = findStopPoint(ptlink.getStartOfLink());
@@ -338,5 +338,5 @@
                     OsmPrimitive end = tridentObjects.get(ptlink.getEndOfLink());
                     if (start == null) {
-                        Main.warn("Cannot find start StopPoint: "+ptlink.getStartOfLink());
+                        Logging.warn("Cannot find start StopPoint: "+ptlink.getStartOfLink());
                     } else if (start.get(OSM_PUBLIC_TRANSPORT).equals(OSM_STOP) || start.get(OSM_PUBLIC_TRANSPORT).equals(OSM_PLATFORM)) {
                         addStopToRoute(route, start);
@@ -344,5 +344,5 @@
 
                     if (end == null) {
-                        Main.warn("Cannot find end StopPoint: "+ptlink.getEndOfLink());
+                        Logging.warn("Cannot find end StopPoint: "+ptlink.getEndOfLink());
                     } else if (end.get(OSM_PUBLIC_TRANSPORT).equals(OSM_STOP) || end.get(OSM_PUBLIC_TRANSPORT).equals(OSM_PLATFORM)) {
                         addStopToRoute(route, end);
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/NetworkReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/NetworkReader.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/NetworkReader.java	(revision 33518)
@@ -11,5 +11,4 @@
 import java.util.regex.Pattern;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -32,4 +31,5 @@
 import org.openstreetmap.josm.plugins.opendata.core.io.tabular.XlsReader;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 
 public class NetworkReader extends OsmServerReader {
@@ -110,5 +110,5 @@
             //return CsvReader.class;//FIXME, can also be .tar.gz
         } else {
-            Main.warn("Unsupported content type: "+contentType);
+            Logging.warn("Unsupported content type: "+contentType);
         }
         return null;
@@ -190,5 +190,5 @@
                 }
             } catch (Exception e) {
-                Main.trace(e);
+                Logging.trace(e);
             }
         }
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/OsmDownloader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/OsmDownloader.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/OsmDownloader.java	(revision 33518)
@@ -7,5 +7,7 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.plugins.opendata.core.OdConstants;
+import org.openstreetmap.josm.tools.Logging;
 
 public final class OsmDownloader {
@@ -19,7 +21,7 @@
             try {
                 String oapiServer = Main.pref.get(OdConstants.PREF_OAPI, OdConstants.DEFAULT_OAPI);
-                Main.info(oapiReq);
+                Logging.info(oapiReq);
                 String oapiReqEnc = URLEncoder.encode(oapiReq, OdConstants.UTF8);
-                Main.main.menu.openLocation.openUrl(false, oapiServer+"data="+oapiReqEnc);
+                MainApplication.getMenu().openLocation.openUrl(false, oapiServer+"data="+oapiReqEnc);
             } catch (UnsupportedEncodingException e) {
                 e.printStackTrace();
@@ -32,5 +34,5 @@
             String xapiServer = Main.pref.get(OdConstants.PREF_XAPI, OdConstants.DEFAULT_XAPI);
             for (String xapiReq : xapiReqs) {
-                Main.main.menu.openLocation.openUrl(false, xapiServer+xapiReq);
+                MainApplication.getMenu().openLocation.openUrl(false, xapiServer+xapiReq);
             }
         }
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/archive/ArchiveReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/archive/ArchiveReader.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/archive/ArchiveReader.java	(revision 33518)
@@ -17,5 +17,4 @@
 import javax.xml.stream.XMLStreamException;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -39,4 +38,5 @@
 import org.openstreetmap.josm.plugins.opendata.core.io.tabular.XlsReader;
 import org.openstreetmap.josm.plugins.opendata.core.util.OdUtils;
+import org.openstreetmap.josm.tools.Logging;
 
 public abstract class ArchiveReader extends AbstractReader {
@@ -123,5 +123,5 @@
             }
         } catch (IllegalArgumentException e) {
-            Main.error(e.getMessage());
+            Logging.error(e.getMessage());
         } finally {
             OdUtils.deleteDir(temp);
@@ -144,8 +144,8 @@
             return null;
         } else if (!f.exists()) {
-            Main.warn("File does not exist: "+f.getPath());
+            Logging.warn("File does not exist: "+f.getPath());
             return null;
         } else {
-            Main.info("Parsing file "+f.getName());
+            Logging.info("Parsing file "+f.getName());
             DataSet from = null;
             FileInputStream in = new FileInputStream(f);
@@ -176,8 +176,8 @@
                     from = NeptuneReader.parseDataSet(in, handler, instance);
                 } else {
-                    Main.warn("Unsupported XML file: "+f.getName());
+                    Logging.warn("Unsupported XML file: "+f.getName());
                 }
             } else {
-                Main.warn("Unsupported file extension: "+f.getName());
+                Logging.warn("Unsupported file extension: "+f.getName());
             }
             return from;
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/archive/SevenZipReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/archive/SevenZipReader.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/archive/SevenZipReader.java	(revision 33518)
@@ -23,5 +23,4 @@
 import org.j7zip.SevenZip.Archive.IInArchive;
 import org.j7zip.SevenZip.Archive.SevenZip.Handler;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -29,4 +28,5 @@
 import org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler;
 import org.openstreetmap.josm.plugins.opendata.core.util.OdUtils;
+import org.openstreetmap.josm.tools.Logging;
 
 public class SevenZipReader extends ArchiveReader {
@@ -44,5 +44,5 @@
         if (archive.Open(random) != 0) {
             String message = "Unable to open 7z archive: "+tmpFile.getPath();
-            Main.warn(message);
+            Logging.warn(message);
             random.close();
             if (!tmpFile.delete()) {
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/archive/ZipReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/archive/ZipReader.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/archive/ZipReader.java	(revision 33518)
@@ -17,9 +17,9 @@
 import javax.xml.stream.XMLStreamException;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler;
+import org.openstreetmap.josm.tools.Logging;
 
 public class ZipReader extends ArchiveReader {
@@ -47,7 +47,5 @@
     protected void extractArchive(final File temp, final List<File> candidates) throws IOException, FileNotFoundException {
         while ((entry = zis.getNextEntry()) != null) {
-            if (Main.isDebugEnabled()) {
-                Main.debug("Extracting "+entry.getName());
-            }
+            Logging.debug("Extracting {0}", entry.getName());
             File file = new File(temp + File.separator + entry.getName());
             File parent = file.getParentFile();
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/AbstractMapInfoReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/AbstractMapInfoReader.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/AbstractMapInfoReader.java	(revision 33518)
@@ -13,5 +13,4 @@
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -19,4 +18,5 @@
 import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.plugins.opendata.core.OdConstants;
+import org.openstreetmap.josm.tools.Logging;
 
 public abstract class AbstractMapInfoReader extends AbstractReader {
@@ -78,5 +78,5 @@
             return Charset.forName(OdConstants.MAC_ROMAN);
         } else {
-            Main.error("Line "+lineNum+". Unknown charset detected: "+line);
+            Logging.error("Line "+lineNum+". Unknown charset detected: "+line);
             return Charset.forName(words[index]);
         }
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/DefaultShpHandler.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/DefaultShpHandler.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/DefaultShpHandler.java	(revision 33518)
@@ -33,4 +33,5 @@
 import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference;
 import org.openstreetmap.josm.plugins.opendata.core.OdConstants;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Pair;
 
@@ -52,5 +53,5 @@
                 OdConstants.PREF_CRS_COMPARISON_TOLERANCE, OdConstants.DEFAULT_CRS_COMPARISON_TOLERANCE);
         if (Main.pref.getBoolean(OdConstants.PREF_CRS_COMPARISON_DEBUG, false)) {
-            Main.debug("Comparing "+a+" and "+b+" -> "+res);
+            Logging.debug("Comparing "+a+" and "+b+" -> "+res);
         }
         return res;
@@ -105,5 +106,5 @@
                                             result.add(CRS.findMathTransform(CRS.decode(p.toCode()), targetCRS, lenient));
                                         } catch (FactoryException e) {
-                                            Main.error(e.getMessage());
+                                            Logging.error(e.getMessage());
                                         }
                                     }
@@ -116,5 +117,5 @@
             if (!result.isEmpty()) {
                 if (result.size() > 1) {
-                    Main.warn("Found multiple projections !"); // TODO: something
+                    Logging.warn("Found multiple projections !"); // TODO: something
                 }
                 return result.get(0);
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GeographicReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GeographicReader.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GeographicReader.java	(revision 33518)
@@ -62,4 +62,5 @@
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.ImageProvider.ImageSizes;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.UserCancelException;
 import org.openstreetmap.josm.tools.Utils;
@@ -180,5 +181,5 @@
                     tempWay.addNode(createOrGetNode(ls.getPointN(i)));
                 } catch (TransformException | IllegalArgumentException e) {
-                    Main.error("Exception for " + ls + ": " + e.getClass().getName() + ": " + e.getMessage());
+                    Logging.error("Exception for " + ls + ": " + e.getClass().getName() + ": " + e.getMessage());
                 }
             }
@@ -250,5 +251,5 @@
 
     private static void compareDebug(CoordinateReferenceSystem crs1, CoordinateReferenceSystem crs2) {
-        Main.debug("-- COMPARING "+crs1.getName()+" WITH "+crs2.getName()+" --");
+        Logging.debug("-- COMPARING "+crs1.getName()+" WITH "+crs2.getName()+" --");
         compareDebug("class", crs1.getClass(), crs2.getClass());
         CoordinateSystem cs1 = crs1.getCoordinateSystem();
@@ -279,5 +280,5 @@
             }
         }
-        Main.debug("-- COMPARING FINISHED --");
+        Logging.debug("-- COMPARING FINISHED --");
     }
 
@@ -295,5 +296,5 @@
 
     private static boolean compareDebug(String text, boolean result, Object o1, Object o2) {
-        Main.debug(text + ": " + result + "("+o1+", "+o2+")");
+        Logging.debug(text + ": " + result + "("+o1+", "+o2+")");
         return result;
     }
@@ -309,5 +310,5 @@
 
     private static void loadEsriWkid() throws IOException {
-        Main.info("Loading ESRI WKID database...");
+        Logging.info("Loading ESRI WKID database...");
         try (InputStream in = getEsriWkidStream();
             JsonReader json = JsonProvider.provider().createReader(in)) {
@@ -322,5 +323,5 @@
             }
         }
-        Main.info("ESRI WKID database loaded");
+        Logging.info("ESRI WKID database loaded");
     }
 
@@ -330,5 +331,5 @@
                 loadEsriWkid();
             } catch (IOException e) {
-                Main.error(e);
+                Logging.error(e);
             }
         }
@@ -352,5 +353,5 @@
                             f.set(crs, Collections.singleton(new NamedIdentifier(Citations.fromName("EPSG"), epsgCode.toString())));
                         } catch (ReflectiveOperationException | SecurityException e) {
-                            Main.error(e);
+                            Logging.error(e);
                         }
                     }
@@ -360,5 +361,5 @@
             transform = CRS.findMathTransform(crs, wgs84);
         } catch (OperationNotFoundException e) {
-            Main.info(crs.getName()+": "+e.getMessage()); // Bursa wolf parameters required.
+            Logging.info(crs.getName()+": "+e.getMessage()); // Bursa wolf parameters required.
 
             if (findSimiliarCrs) {
@@ -374,5 +375,5 @@
                                     OdConstants.PREF_CRS_COMPARISON_TOLERANCE, OdConstants.DEFAULT_CRS_COMPARISON_TOLERANCE));
                             if (((AbstractCRS) candidate).equals((AbstractIdentifiedObject) crs, false)) {
-                                Main.info("Found a potential CRS: "+candidate.getName());
+                                Logging.info("Found a potential CRS: "+candidate.getName());
                                 candidates.add(candidate);
                             } else if (Main.pref.getBoolean(OdConstants.PREF_CRS_COMPARISON_DEBUG, false)) {
@@ -382,10 +383,10 @@
                         }
                     } catch (FactoryException ex) {
-                        Main.trace(ex);
+                        Logging.trace(ex);
                     }
                 }
 
                 if (candidates.size() > 1) {
-                    Main.warn("Found several potential CRS: "+Arrays.toString(candidates.toArray()));
+                    Logging.warn("Found several potential CRS: "+Arrays.toString(candidates.toArray()));
                     // TODO: ask user which one to use
                 }
@@ -396,5 +397,5 @@
                         transform = CRS.findMathTransform(newCRS, wgs84, false);
                     } catch (OperationNotFoundException ex) {
-                        Main.warn(newCRS.getName()+": "+e.getMessage());
+                        Logging.warn(newCRS.getName()+": "+e.getMessage());
                     }
                 }
@@ -407,5 +408,5 @@
                         transform = handler.findMathTransform(crs, wgs84, false);
                     } catch (OperationNotFoundException ex) {
-                        Main.warn(crs.getName()+": "+ex.getMessage()); // Bursa wolf parameters required.
+                        Logging.warn(crs.getName()+": "+ex.getMessage()); // Bursa wolf parameters required.
                     }
                 } else {
@@ -417,5 +418,5 @@
                             }
                         } catch (OperationNotFoundException ex) {
-                            Main.warn(crs.getName()+": "+ex.getMessage()); // Bursa wolf parameters required.
+                            Logging.warn(crs.getName()+": "+ex.getMessage()); // Bursa wolf parameters required.
                         }
                     }
@@ -427,5 +428,5 @@
                         throw new UserCancelException();
                     }
-                    Main.info("Searching for a lenient math transform.");
+                    Logging.info("Searching for a lenient math transform.");
                     transform = CRS.findMathTransform(crs, wgs84, true);
                 }
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GmlReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GmlReader.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GmlReader.java	(revision 33518)
@@ -30,4 +30,5 @@
 import org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler;
 import org.openstreetmap.josm.plugins.opendata.core.datasets.NationalHandlers;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.UserCancelException;
 
@@ -109,5 +110,5 @@
 
     private void findCRS(String srs) throws NoSuchAuthorityCodeException, FactoryException {
-        Main.info("Finding CRS for "+srs);
+        Logging.info("Finding CRS for "+srs);
         if (gmlHandler != null) {
             crs = gmlHandler.getCrsFor(srs);
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/KmzReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/KmzReader.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/KmzReader.java	(revision 33518)
@@ -12,9 +12,9 @@
 import javax.xml.stream.XMLStreamException;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.io.AbstractReader;
 import org.openstreetmap.josm.io.IllegalDataException;
+import org.openstreetmap.josm.tools.Logging;
 
 public class KmzReader extends AbstractReader {
@@ -42,5 +42,5 @@
             entry = zis.getNextEntry();
             if (entry == null) {
-                Main.warn("No KML file found");
+                Logging.warn("No KML file found");
                 return null;
             }
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/MifReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/MifReader.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/MifReader.java	(revision 33518)
@@ -17,5 +17,4 @@
 import java.util.Arrays;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -36,4 +35,5 @@
 import org.openstreetmap.josm.plugins.opendata.core.io.InputStreamReaderUnbuffered;
 import org.openstreetmap.josm.plugins.opendata.core.util.OdUtils;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
@@ -110,10 +110,10 @@
     private void parseUnique(String[] words) {
         // TODO
-        Main.warn("TODO Unique: "+line);
+        Logging.warn("TODO Unique: "+line);
     }
 
     private void parseIndex(String[] words) {
         // TODO
-        Main.warn("TODO Index: "+line);
+        Logging.warn("TODO Index: "+line);
     }
 
@@ -285,6 +285,6 @@
 
         if (josmProj == null) {
-            Main.info(line);
-            Main.info(params);
+            Logging.info(line);
+            Logging.info(params);
             josmProj = new CustomProjection(params);
         }
@@ -312,6 +312,6 @@
             maxx = Double.valueOf(words[index+3].substring(1));
             maxy = Double.valueOf(words[index+4].substring(0, words[index+4].length()-1));
-            if (Main.isTraceEnabled()) {
-                Main.trace(Arrays.toString(words) + " -> "+minx+","+miny+","+maxx+","+maxy);
+            if (Logging.isTraceEnabled()) {
+                Logging.trace(Arrays.toString(words) + " -> "+minx+","+miny+","+maxx+","+maxy);
             }
         }
@@ -348,8 +348,8 @@
         case "table":
         case "window":
-            Main.error("Unsupported CoordSys clause: "+line);
+            Logging.error("Unsupported CoordSys clause: "+line);
             break;
         default:
-            Main.error("Line "+lineNum+". Invalid CoordSys clause: "+line);
+            Logging.error("Line "+lineNum+". Invalid CoordSys clause: "+line);
         }
     }
@@ -357,5 +357,5 @@
     private void parseTransform(String[] words) {
         // TODO
-        Main.warn("TODO Transform: "+line);
+        Logging.warn("TODO Transform: "+line);
     }
 
@@ -427,25 +427,25 @@
     private void parseArc(String[] words) {
         // TODO
-        Main.warn("TODO Arc: "+line);
+        Logging.warn("TODO Arc: "+line);
     }
 
     private void parseText(String[] words) {
         // TODO
-        Main.warn("TODO Text: "+line);
+        Logging.warn("TODO Text: "+line);
     }
 
     private void parseRect(String[] words) {
         // TODO
-        Main.warn("TODO Rect: "+line);
+        Logging.warn("TODO Rect: "+line);
     }
 
     private void parseRoundRect(String[] words) {
         // TODO
-        Main.warn("TODO RoundRect: "+line);
+        Logging.warn("TODO RoundRect: "+line);
     }
 
     private void parseEllipse(String[] words) {
         // TODO
-        Main.warn("TODO Ellipse: "+line);
+        Logging.warn("TODO Ellipse: "+line);
     }
 
@@ -580,5 +580,5 @@
                 // Do nothing
             } else if (!words[0].isEmpty()) {
-                Main.warn("Line "+lineNum+". Unknown clause in data section: "+line);
+                Logging.warn("Line "+lineNum+". Unknown clause in data section: "+line);
             }
         } else if (state == State.READING_COLUMNS && numcolumns > 0) {
@@ -588,5 +588,5 @@
             }
         } else if (!line.isEmpty()) {
-            Main.warn("Line "+lineNum+". Unknown clause in header: "+line);
+            Logging.warn("Line "+lineNum+". Unknown clause in header: "+line);
         }
     }
@@ -598,5 +598,5 @@
                 String[] fields = OdUtils.stripQuotesAndExtraChars(midLine.split(delimiter.toString()), delimiter.toString());
                 if (columns.size() != fields.length) {
-                    Main.error("Incoherence between MID and MIF files ("+columns.size()+" columns vs "+fields.length+" fields)");
+                    Logging.error("Incoherence between MID and MIF files ("+columns.size()+" columns vs "+fields.length+" fields)");
                 }
                 for (int i = 0; i < Math.min(columns.size(), fields.length); i++) {
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/ShpReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/ShpReader.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/ShpReader.java	(revision 33518)
@@ -49,4 +49,5 @@
 import org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler;
 import org.openstreetmap.josm.plugins.opendata.core.datasets.NationalHandlers;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.UserCancelException;
 
@@ -93,15 +94,12 @@
                     crs = desc.getCoordinateReferenceSystem();
                 } else if (!GraphicsEnvironment.isHeadless()) {
-                    GuiHelper.runInEDTAndWait(new Runnable() {
-                        @Override
-                        public void run() {
-                            if (0 == JOptionPane.showConfirmDialog(
-                                    parent,
-                                    tr("Unable to detect Coordinate Reference System.\nWould you like to fallback to ESPG:4326 (WGS 84) ?"),
-                                    tr("Warning: CRS not found"),
-                                    JOptionPane.YES_NO_CANCEL_OPTION
-                                    )) {
-                                crs = wgs84;
-                            }
+                    GuiHelper.runInEDTAndWait(() -> {
+                        if (0 == JOptionPane.showConfirmDialog(
+                                parent,
+                                tr("Unable to detect Coordinate Reference System.\nWould you like to fallback to ESPG:4326 (WGS 84) ?"),
+                                tr("Warning: CRS not found"),
+                                JOptionPane.YES_NO_CANCEL_OPTION
+                                )) {
+                            crs = wgs84;
                         }
                     });
@@ -126,5 +124,5 @@
                 int nGeometries = mp.getNumGeometries();
                 if (nGeometries < 1) {
-                    Main.error("empty geometry collection found");
+                    Logging.error("empty geometry collection found");
                 } else {
                     Relation r = null;
@@ -154,5 +152,5 @@
                             readNonGeometricAttributes(feature, createOrGetNode((Point) g));
                         } else {
-                            Main.error("unsupported geometry : "+g);
+                            Logging.error("unsupported geometry : "+g);
                         }
                     }
@@ -161,11 +159,11 @@
             } else {
                 // Debug unknown geometry
-                Main.debug("\ttype: "+geometry.getType());
-                Main.debug("\tbounds: "+geometry.getBounds());
-                Main.debug("\tdescriptor: "+desc);
-                Main.debug("\tname: "+geometry.getName());
-                Main.debug("\tvalue: "+geometry.getValue());
-                Main.debug("\tid: "+geometry.getIdentifier());
-                Main.debug("-------------------------------------------------------------");
+                Logging.debug("\ttype: "+geometry.getType());
+                Logging.debug("\tbounds: "+geometry.getBounds());
+                Logging.debug("\tdescriptor: "+desc);
+                Logging.debug("\tname: "+geometry.getName());
+                Logging.debug("\tvalue: "+geometry.getValue());
+                Logging.debug("\tid: "+geometry.getIdentifier());
+                Logging.debug("-------------------------------------------------------------");
             }
 
@@ -196,10 +194,10 @@
                             charset = Charset.forName(reader.readLine());
                         } catch (IOException | UnsupportedCharsetException | IllegalCharsetNameException e) {
-                            Main.warn(e);
+                            Logging.warn(e);
                         }
                     }
                 }
                 if (charset != null) {
-                    Main.info("Using charset "+charset);
+                    Logging.info("Using charset "+charset);
                     params.put(ShapefileDataStoreFactory.DBFCHARSET.key, charset.name());
                 }
@@ -249,8 +247,8 @@
             }
         } catch (IOException e) {
-            Main.error(e);
+            Logging.error(e);
             throw e;
         } catch (Exception e) {
-            Main.error(e);
+            Logging.error(e);
             throw new IOException(e);
         }
@@ -277,5 +275,5 @@
             }
         } catch (Exception e) {
-            Main.error(e);
+            Logging.error(e);
         }
     }
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/TabReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/TabReader.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/TabReader.java	(revision 33518)
@@ -16,5 +16,4 @@
 import org.geotools.data.shapefile.dbf.DbaseFileReader.Row;
 import org.geotools.data.shapefile.files.TabFiles;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -23,4 +22,5 @@
 import org.openstreetmap.josm.plugins.opendata.core.io.tabular.SpreadSheetHandler;
 import org.openstreetmap.josm.plugins.opendata.core.io.tabular.SpreadSheetReader;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
@@ -83,5 +83,5 @@
                     doParse(columns.toArray(new String[0]), instance);
         } catch (IOException e) {
-            Main.error(e.getMessage());
+            Logging.error(e.getMessage());
         }
         return ds;
@@ -105,5 +105,5 @@
             parseColumns(words);
         } else if (!line.isEmpty()) {
-            Main.warn("Line "+lineNum+". Unknown clause in header: "+line);
+            Logging.warn("Line "+lineNum+". Unknown clause in header: "+line);
         }
     }
@@ -118,5 +118,5 @@
             datCharset = parseCharset(words, 3);
         } else {
-            Main.warn("Line "+lineNum+". Unknown Type clause in header: "+line);
+            Logging.warn("Line "+lineNum+". Unknown Type clause in header: "+line);
         }
     }
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/CsvImporter.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/CsvImporter.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/CsvImporter.java	(revision 33518)
@@ -10,5 +10,4 @@
 import java.io.InputStream;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -17,4 +16,5 @@
 import org.openstreetmap.josm.plugins.opendata.core.OdConstants;
 import org.openstreetmap.josm.plugins.opendata.core.io.AbstractImporter;
+import org.openstreetmap.josm.tools.Logging;
 
 public class CsvImporter extends AbstractImporter {
@@ -52,5 +52,5 @@
                 result = line != null && line.equalsIgnoreCase(COLOMBUS_HEADER);
             } catch (IOException e) {
-                Main.trace(e);
+                Logging.trace(e);
             }
         }
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/CsvReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/CsvReader.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/CsvReader.java	(revision 33518)
@@ -8,5 +8,4 @@
 import java.nio.charset.Charset;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -14,4 +13,5 @@
 import org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler;
 import org.openstreetmap.josm.plugins.opendata.core.util.OdUtils;
+import org.openstreetmap.josm.tools.Logging;
 
 public class CsvReader extends SpreadSheetReader {
@@ -44,5 +44,5 @@
             if (csvHandler == null || csvHandler.getSeparator() == null || ";".equals(csvHandler.getSeparator())) {
                 // If default sep has been used, try comma
-                Main.warn(e.getMessage());
+                Logging.warn(e.getMessage());
                 csvReader.sep = ",";
                 return csvReader.doParse(csvReader.splitLine(), instance);
@@ -55,5 +55,5 @@
     @Override
     protected void initResources(InputStream in, ProgressMonitor progressMonitor) throws IOException {
-        Main.info("Parsing CSV file using charset "+charset+" and separator '"+sep+"'");
+        Logging.info("Parsing CSV file using charset "+charset+" and separator '"+sep+"'");
 
         reader = new BufferedReader(new InputStreamReader(in, charset));
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/OdsDocument.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/OdsDocument.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/OdsDocument.java	(revision 33518)
@@ -11,5 +11,5 @@
 import org.jopendocument.io.SaxContentUnmarshaller;
 import org.jopendocument.model.OpenDocument;
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.InputSource;
@@ -45,5 +45,5 @@
                 if (entry.getName().equals("content.xml")) {
                     rdr.setContentHandler(contentHandler);
-                    Main.info("Parsing content.xml");
+                    Logging.info("Parsing content.xml");
                     rdr.parse(getEntryInputSource(zis));
                     contentParsed = true;
@@ -52,5 +52,5 @@
 
         } catch (Exception e) {
-            Main.error(e);
+            Logging.error(e);
         }
 
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/OdsReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/OdsReader.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/OdsReader.java	(revision 33518)
@@ -13,8 +13,8 @@
 import org.jopendocument.model.table.TableTableRow;
 import org.jopendocument.model.text.TextP;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler;
+import org.openstreetmap.josm.tools.Logging;
 
 public class OdsReader extends SpreadSheetReader {
@@ -24,7 +24,7 @@
     private List<TableTableRow> rows;
     private int rowIndex;
-    
+
     private static final String SEP = "TextP:[";
-    
+
     public OdsReader(SpreadSheetHandler handler) {
         super(handler);
@@ -39,5 +39,5 @@
     protected void initResources(InputStream in, ProgressMonitor progressMonitor) throws IOException {
         try {
-            Main.info("Parsing ODS file");
+            Logging.info("Parsing ODS file");
             doc = new OdsDocument(in);
             List<OfficeSpreadsheet> spreadsheets = doc.getBody().getOfficeSpreadsheets();
@@ -63,5 +63,5 @@
 
             if (rowIndex % 5000 == 0) {
-                Main.info("Lines read: "+rowIndex);
+                Logging.info("Lines read: "+rowIndex);
             }
 
@@ -76,5 +76,5 @@
                 }
             }
-            
+
             return rowIndex == 1 || !allFieldsBlank ? result.toArray(new String[0]) : null;
         }
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/SpreadSheetReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/SpreadSheetReader.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/SpreadSheetReader.java	(revision 33518)
@@ -29,4 +29,5 @@
 import org.openstreetmap.josm.plugins.opendata.core.gui.ChooserLauncher;
 import org.openstreetmap.josm.plugins.opendata.core.io.ProjectionPatterns;
+import org.openstreetmap.josm.tools.Logging;
 
 public abstract class SpreadSheetReader extends AbstractReader {
@@ -94,5 +95,5 @@
 
     public DataSet doParse(String[] header, ProgressMonitor progressMonitor) throws IOException {
-        Main.info("Header: "+Arrays.toString(header));
+        Logging.info("Header: "+Arrays.toString(header));
 
         Map<ProjectionPatterns, List<CoordinateColumns>> projColumns = new HashMap<>();
@@ -173,5 +174,5 @@
         }
 
-        Main.info("Loading data using projections "+message);
+        Logging.info("Loading data using projections "+message);
 
         final DataSet ds = new DataSet();
@@ -194,6 +195,6 @@
 
             if (fields.length > header.length) {
-                Main.warn(tr("Invalid file. Bad length on line {0}. Expected {1} columns, got {2}.", lineNumber, header.length, fields.length));
-                Main.warn(Arrays.toString(fields));
+                Logging.warn(tr("Invalid file. Bad length on line {0}. Expected {1} columns, got {2}.", lineNumber, header.length, fields.length));
+                Logging.warn(Arrays.toString(fields));
             }
 
@@ -235,5 +236,5 @@
                     }
                 } catch (ParseException e) {
-                    Main.warn("Parsing error on line "+lineNumber+": "+e.getMessage());
+                    Logging.warn("Parsing error on line "+lineNumber+": "+e.getMessage());
                 }
             }
@@ -245,5 +246,5 @@
                     n.setCoor(c.proj != null && !handlerOK ? c.proj.eastNorth2latlon(en) : handler != null ? handler.getCoor(en, fields) : null);
                 } else {
-                    Main.warn("Skipping line "+lineNumber+" because no valid coordinates have been found at columns "+c);
+                    Logging.warn("Skipping line "+lineNumber+" because no valid coordinates have been found at columns "+c);
                 }
                 if (n.getCoor() != null) {
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/XlsReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/XlsReader.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/XlsReader.java	(revision 33518)
@@ -14,8 +14,8 @@
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler;
+import org.openstreetmap.josm.tools.Logging;
 
 public class XlsReader extends SpreadSheetReader {
@@ -24,5 +24,5 @@
     private Sheet sheet;
     private int rowIndex;
-    
+
     public XlsReader(SpreadSheetHandler handler) {
         super(handler);
@@ -36,5 +36,5 @@
     @Override
     protected void initResources(InputStream in, ProgressMonitor progressMonitor) throws IOException {
-        Main.info("Parsing XLS file");
+        Logging.info("Parsing XLS file");
         try {
             wb = new HSSFWorkbook(new POIFSFileSystem(in));
@@ -44,5 +44,5 @@
             Throwable ex = e.getException();
             if (ex != null && ex.getMessage() != null) {
-                Main.error(ex.getClass()+": "+ex.getMessage());
+                Logging.error(ex.getClass()+": "+ex.getMessage());
             }
             throw new IOException(e);
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/layers/OdDataLayer.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/layers/OdDataLayer.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/layers/OdDataLayer.java	(revision 33518)
@@ -11,9 +11,9 @@
 import javax.swing.Action;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
@@ -55,5 +55,5 @@
             }
         }
-        Main.getLayerManager().addLayerChangeListener(this);
+        MainApplication.getLayerManager().addLayerChangeListener(this);
     }
 
@@ -65,10 +65,10 @@
         removeOsmLayer();
         osmLayer = layer;
-        Main.getLayerManager().addLayer(osmLayer);
+        MainApplication.getLayerManager().addLayer(osmLayer);
     }
 
     public void removeOsmLayer() {
         if (osmLayer != null) {
-            Main.getLayerManager().removeLayer(osmLayer);
+            MainApplication.getLayerManager().removeLayer(osmLayer);
             osmLayer = null;
         }
@@ -78,10 +78,10 @@
         removeDiffLayer();
         diffLayer = layer;
-        Main.getLayerManager().addLayer(diffLayer);
+        MainApplication.getLayerManager().addLayer(diffLayer);
     }
 
     public void removeDiffLayer() {
         if (diffLayer != null) {
-            Main.getLayerManager().removeLayer(diffLayer);
+            MainApplication.getLayerManager().removeLayer(diffLayer);
             diffLayer = null;
         }
@@ -96,5 +96,5 @@
                 final OdOsmDataLayer layer = new OdOsmDataLayer(this, dataSet, getName()+"/OSM");
                 addOsmLayer(layer);
-                Main.getLayerManager().setActiveLayer(osmLayer);
+                MainApplication.getLayerManager().setActiveLayer(osmLayer);
                 if (oapiReq != null) {
                     OsmDownloader.downloadOapi(oapiReq);
@@ -110,5 +110,5 @@
     @Override
     public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
-        if (Main.getLayerManager().getActiveLayer() == this && this.handler != null) {
+        if (MainApplication.getLayerManager().getActiveLayer() == this && this.handler != null) {
             this.handler.notifyActive();
         }
@@ -184,5 +184,5 @@
         final OdDiffLayer layer = new OdDiffLayer(this, getName()+"/Diff");
         addDiffLayer(layer);
-        Main.getLayerManager().setActiveLayer(diffLayer);
+        MainApplication.getLayerManager().setActiveLayer(diffLayer);
     }
 }
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/layers/OdOsmDataLayer.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/layers/OdOsmDataLayer.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/layers/OdOsmDataLayer.java	(revision 33518)
@@ -7,9 +7,9 @@
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 
@@ -22,40 +22,37 @@
         this.dataLayer = dataLayer;
     }
-    
+
     public final void removeForbiddenTags() {
         if (dataLayer != null && dataLayer.handler != null && dataLayer.handler.hasForbiddenTags()) {
-            Main.worker.submit(new Runnable() {
-                @Override
-                public void run() {
-                    data.clearSelection();
-                    for (Iterator<OsmPrimitive> it = data.allPrimitives().iterator(); it.hasNext();) {
-                        OsmPrimitive p = it.next();
-                        if (dataLayer.handler.isForbidden(p)) {
-                            data.addSelected(p);
-                            
-                            List<Node> nodes = null;
-                            if (p instanceof Way) {
-                                nodes = ((Way) p).getNodes();
-                            }
-                            if (nodes != null) {
-                                for (Node n : nodes) {
-                                    List<OsmPrimitive> refferingAllowedWays = new ArrayList<>();
-                                    for (OsmPrimitive referrer : n.getReferrers()) {
-                                        if (referrer instanceof Way && !dataLayer.handler.isForbidden(referrer)) {
-                                            refferingAllowedWays.add(referrer);
-                                        }
+            MainApplication.worker.submit(() -> {
+                data.clearSelection();
+                for (Iterator<OsmPrimitive> it = data.allPrimitives().iterator(); it.hasNext();) {
+                    OsmPrimitive p = it.next();
+                    if (dataLayer.handler.isForbidden(p)) {
+                        data.addSelected(p);
+
+                        List<Node> nodes = null;
+                        if (p instanceof Way) {
+                            nodes = ((Way) p).getNodes();
+                        }
+                        if (nodes != null) {
+                            for (Node n : nodes) {
+                                List<OsmPrimitive> refferingAllowedWays = new ArrayList<>();
+                                for (OsmPrimitive referrer : n.getReferrers()) {
+                                    if (referrer instanceof Way && !dataLayer.handler.isForbidden(referrer)) {
+                                        refferingAllowedWays.add(referrer);
                                     }
-                                    
-                                    if (refferingAllowedWays.isEmpty()) {
-                                        data.addSelected(n);
-                                    }
+                                }
+
+                                if (refferingAllowedWays.isEmpty()) {
+                                    data.addSelected(n);
                                 }
                             }
                         }
                     }
-                    Collection<OsmPrimitive> sel = data.getSelected();
-                    if (!sel.isEmpty()) {
-                        Main.main.menu.purge.actionPerformed(null);
-                    }
+                }
+                Collection<OsmPrimitive> sel = data.getSelected();
+                if (!sel.isEmpty()) {
+                    MainApplication.getMenu().purge.actionPerformed(null);
                 }
             });
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/AbstractModule.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/AbstractModule.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/AbstractModule.java	(revision 33518)
@@ -10,11 +10,11 @@
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry;
-import org.openstreetmap.josm.gui.preferences.SourceEntry;
-import org.openstreetmap.josm.gui.preferences.SourceProvider;
+import org.openstreetmap.josm.data.preferences.sources.ExtendedSourceEntry;
+import org.openstreetmap.josm.data.preferences.sources.SourceEntry;
+import org.openstreetmap.josm.data.preferences.sources.SourceProvider;
 import org.openstreetmap.josm.plugins.opendata.OdPlugin;
 import org.openstreetmap.josm.plugins.opendata.core.OdConstants;
 import org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler;
+import org.openstreetmap.josm.tools.Logging;
 
 public abstract class AbstractModule implements Module {
@@ -62,6 +62,6 @@
                      FileOutputStream out = new FileOutputStream(path)) {
                     String dir = path.substring(0, path.lastIndexOf(File.separatorChar));
-                    if (new File(dir).mkdirs() && Main.isDebugEnabled()) {
-                        Main.debug("Created directory: "+dir);
+                    if (new File(dir).mkdirs() && Logging.isDebugEnabled()) {
+                        Logging.debug("Created directory: "+dir);
                     }
                     while ((n = in.read(buffer)) > 0) {
@@ -72,5 +72,5 @@
                     sources.add(src);
                 } catch (IOException e) {
-                    Main.error(e.getMessage());
+                    Logging.error(e.getMessage());
                 }
             }
@@ -108,5 +108,5 @@
                     result.add(handlerClass.getConstructor().newInstance());
                 } catch (ReflectiveOperationException | IllegalArgumentException | SecurityException t) {
-                    Main.error(t, "Cannot instantiate "+handlerClass+" because of "+t.getClass().getName());
+                    Logging.log(Logging.LEVEL_ERROR, "Cannot instantiate "+handlerClass+" because of "+t.getClass().getName(), t);
                 }
             }
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/Module.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/Module.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/Module.java	(revision 33518)
@@ -4,5 +4,5 @@
 import java.util.List;
 
-import org.openstreetmap.josm.gui.preferences.SourceProvider;
+import org.openstreetmap.josm.data.preferences.sources.SourceProvider;
 import org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler;
 
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ModuleDownloadTask.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ModuleDownloadTask.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ModuleDownloadTask.java	(revision 33518)
@@ -16,5 +16,4 @@
 import java.util.LinkedList;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Version;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
@@ -23,4 +22,5 @@
 import org.openstreetmap.josm.plugins.opendata.OdPlugin;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
@@ -95,5 +95,5 @@
             if (pi.downloadlink == null) {
                 String msg = tr("Warning: Cannot download module ''{0}''. Its download link is not known. Skipping download.", pi.name);
-                Main.warn(msg);
+                Logging.warn(msg);
                 throw new ModuleDownloadException(msg);
             }
@@ -118,5 +118,5 @@
             String msg = tr("Warning: Cannot download module ''{0}''. Its download link ''{1}'' is not a valid URL. Skipping download.",
                     pi.name, pi.downloadlink);
-            Main.warn(msg);
+            Logging.warn(msg);
             throw new ModuleDownloadException(msg);
         } catch (IOException e) {
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ModuleHandler.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ModuleHandler.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ModuleHandler.java	(revision 33518)
@@ -35,8 +35,8 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.preferences.sources.SourceProvider;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
 import org.openstreetmap.josm.gui.help.HelpUtil;
-import org.openstreetmap.josm.gui.preferences.SourceProvider;
 import org.openstreetmap.josm.gui.preferences.map.MapPaintPreference;
 import org.openstreetmap.josm.gui.preferences.map.TaggingPresetPreference;
@@ -50,4 +50,5 @@
 import org.openstreetmap.josm.tools.I18n;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
@@ -138,5 +139,5 @@
         if (policy.equals("never")) {
             if ("opendata.modulemanager.time-based-update.policy".equals(togglePreferenceKey)) {
-                Main.info(tr("Skipping module update after elapsed update interval. Automatic update at startup is disabled."));
+                Logging.info(tr("Skipping module update after elapsed update interval. Automatic update at startup is disabled."));
             }
             return false;
@@ -145,5 +146,5 @@
         if (policy.equals("always")) {
             if ("opendata.modulemanager.time-based-update.policy".equals(togglePreferenceKey)) {
-                Main.info(tr("Running module update after elapsed update interval. Automatic update at startup is disabled."));
+                Logging.info(tr("Running module update after elapsed update interval. Automatic update at startup is disabled."));
             }
             return true;
@@ -151,5 +152,5 @@
 
         if (!policy.equals("ask")) {
-            Main.warn(tr("Unexpected value ''{0}'' for preference ''{1}''. Assuming value ''ask''.", policy, togglePreferenceKey));
+            Logging.warn(tr("Unexpected value ''{0}'' for preference ''{1}''. Assuming value ''ask''.", policy, togglePreferenceKey));
         }
         int ret = HelpAwareOptionPane.showOptionDialog(
@@ -231,5 +232,5 @@
             Class<? extends Module> klass = module.loadClass(moduleClassLoader);
             if (klass != null) {
-                Main.info(tr("loading module ''{0}'' (version {1})", module.name, module.localversion));
+                Logging.info(tr("loading module ''{0}'' (version {1})", module.name, module.localversion));
                 Module mod = module.load(klass);
                 if (moduleList.add(mod)) {
@@ -252,5 +253,5 @@
             }
         } catch (Exception e) {
-            Main.error(e);
+            Logging.error(e);
         }
         if (msg != null && confirmDisableModule(parent, msg, module.name)) {
@@ -314,5 +315,5 @@
                 future.get();
             } catch (ExecutionException | InterruptedException e) {
-                Main.error(e);
+                Logging.error(e);
                 return null;
             }
@@ -438,9 +439,9 @@
                 modules = buildListOfModulesToLoad(parent);
             } catch (ExecutionException e) {
-                Main.warn(tr("Warning: failed to download module information list"));
+                Logging.warn(tr("Warning: failed to download module information list"));
                 e.printStackTrace();
                 // don't abort in case of error, continue with downloading modules below
             } catch (InterruptedException e) {
-                Main.warn(tr("Warning: failed to download module information list"));
+                Logging.warn(tr("Warning: failed to download module information list"));
                 e.printStackTrace();
                 // don't abort in case of error, continue with downloading modules below
@@ -563,12 +564,12 @@
             if (module.exists()) {
                 if (!module.delete() && dowarn) {
-                    Main.warn(tr("Warning: failed to delete outdated module ''{0}''.", module.toString()));
-                    Main.warn(tr("Warning: failed to install already downloaded module ''{0}''. Skipping installation. JOSM is still going to load the old module version.", moduleName));
+                    Logging.warn(tr("Warning: failed to delete outdated module ''{0}''.", module.toString()));
+                    Logging.warn(tr("Warning: failed to install already downloaded module ''{0}''. Skipping installation. JOSM is still going to load the old module version.", moduleName));
                     continue;
                 }
             }
             if (!updatedModule.renameTo(module) && dowarn) {
-                Main.warn(tr("Warning: failed to install module ''{0}'' from temporary download file ''{1}''. Renaming failed.", module.toString(), updatedModule.toString()));
-                Main.warn(tr("Warning: failed to install already downloaded module ''{0}''. Skipping installation. JOSM is still going to load the old module version.", moduleName));
+                Logging.warn(tr("Warning: failed to install module ''{0}'' from temporary download file ''{1}''. Renaming failed.", module.toString(), updatedModule.toString()));
+                Logging.warn(tr("Warning: failed to install already downloaded module ''{0}''. Skipping installation. JOSM is still going to load the old module version.", moduleName));
             }
             // CHECKSTYLE.ON: LineLength
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ModuleInformation.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ModuleInformation.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ModuleInformation.java	(revision 33518)
@@ -31,4 +31,5 @@
 import org.openstreetmap.josm.tools.ImageProvider.ImageSizes;
 import org.openstreetmap.josm.tools.LanguageInfo;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
@@ -151,5 +152,5 @@
                 URL url = new URL(s);
             } catch (MalformedURLException e) {
-                Main.error(tr("Invalid URL ''{0}'' in module {1}", s, name));
+                Logging.error(tr("Invalid URL ''{0}'' in module {1}", s, name));
                 s = null;
             }
@@ -175,5 +176,5 @@
             }
             if (icon == null) {
-                Main.error("Unable to load module icon: "+iconPath);
+                Logging.error("Unable to load module icon: "+iconPath);
             }
         }
@@ -252,5 +253,5 @@
             return f.toURI().toURL();
         } catch (MalformedURLException ex) {
-            Main.warn(ex.getMessage());
+            Logging.warn(ex.getMessage());
             return null;
         }
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ReadLocalModuleInformationTask.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ReadLocalModuleInformationTask.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ReadLocalModuleInformationTask.java	(revision 33518)
@@ -14,9 +14,9 @@
 import java.util.Map;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
@@ -94,5 +94,5 @@
                 processLocalModuleInformationFile(f);
             } catch (ModuleListParseException e) {
-                Main.warn(tr("Warning: Failed to scan file ''{0}'' for module information. Skipping.", fname));
+                Logging.warn(tr("Warning: Failed to scan file ''{0}'' for module information. Skipping.", fname));
                 e.printStackTrace();
             }
@@ -155,5 +155,5 @@
                 }
             } catch (ModuleException e) {
-                Main.warn(tr("Warning: Failed to scan file ''{0}'' for module information. Skipping.", fname));
+                Logging.warn(tr("Warning: Failed to scan file ''{0}'' for module information. Skipping.", fname));
                 e.printStackTrace();
             }
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ReadRemoteModuleInformationTask.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ReadRemoteModuleInformationTask.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/ReadRemoteModuleInformationTask.java	(revision 33518)
@@ -25,5 +25,4 @@
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Version;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
@@ -33,4 +32,5 @@
 import org.openstreetmap.josm.plugins.opendata.OdPlugin;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.xml.sax.SAXException;
 
@@ -251,5 +251,5 @@
             if (!moduleDir.exists()) {
                 if (!moduleDir.mkdirs()) {
-                    Main.warn(tr("Warning: failed to create module directory ''{0}''. Cannot cache module list from module site ''{1}''.",
+                    Logging.warn(tr("Warning: failed to create module directory ''{0}''. Cannot cache module list from module site ''{1}''.",
                             moduleDir.toString(), site));
                 }
@@ -262,5 +262,5 @@
         } catch (IOException e) {
             // just failed to write the cache file. No big deal, but log the exception anyway
-            Main.warn(e);
+            Logging.warn(e);
         }
     }
@@ -278,8 +278,8 @@
             availableModules.addAll(new ModuleListParser().parse(in));
         } catch (UnsupportedEncodingException e) {
-            Main.error(tr("Failed to parse module list document from site ''{0}''. Skipping site. Exception was: {1}", site, e.toString()));
+            Logging.error(tr("Failed to parse module list document from site ''{0}''. Skipping site. Exception was: {1}", site, e.toString()));
             e.printStackTrace();
         } catch (ModuleListParseException e) {
-            Main.error(tr("Failed to parse module list document from site ''{0}''. Skipping site. Exception was: {1}", site, e.toString()));
+            Logging.error(tr("Failed to parse module list document from site ''{0}''. Skipping site. Exception was: {1}", site, e.toString()));
             e.printStackTrace();
         }
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/util/NamesFrUtils.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/util/NamesFrUtils.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/util/NamesFrUtils.java	(revision 33518)
@@ -10,9 +10,9 @@
 import java.util.Map;
 
-import org.apache.commons.lang3.text.WordUtils;
-import org.openstreetmap.josm.Main;
+import org.apache.commons.text.WordUtils;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.plugins.opendata.core.OdConstants;
 import org.openstreetmap.josm.plugins.opendata.core.datasets.SimpleDataSetHandler;
+import org.openstreetmap.josm.tools.Logging;
 
 public abstract class NamesFrUtils {
@@ -41,5 +41,5 @@
             }
         } catch (IOException e) {
-            Main.error(e);
+            Logging.error(e);
         }
         return result;
@@ -159,5 +159,5 @@
             return label;
         } else {
-            Main.warn("unknown street label: "+label);
+            Logging.warn("unknown street label: "+label);
             return label;
         }
Index: applications/editors/josm/plugins/opendata/test/unit/org/openstreetmap/josm/plugins/opendata/core/io/archive/ZipReaderTest.java
===================================================================
--- applications/editors/josm/plugins/opendata/test/unit/org/openstreetmap/josm/plugins/opendata/core/io/archive/ZipReaderTest.java	(revision 33517)
+++ applications/editors/josm/plugins/opendata/test/unit/org/openstreetmap/josm/plugins/opendata/core/io/archive/ZipReaderTest.java	(revision 33518)
@@ -10,8 +10,8 @@
 import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.plugins.opendata.core.io.NonRegFunctionalTests;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
@@ -34,9 +34,9 @@
         for (Path p : NonRegFunctionalTests.listDataFiles("zip")) {
             File zipfile = p.toFile();
-            Main.info("Testing reading file "+zipfile.getPath());
+            Logging.info("Testing reading file "+zipfile.getPath());
             try (InputStream is = new FileInputStream(zipfile)) {
                 for (Entry<File, DataSet> entry : ZipReader.parseDataSets(is, null, null, false).entrySet()) {
                     String name = entry.getKey().getName();
-                    Main.info("Checking dataset for entry "+name);
+                    Logging.info("Checking dataset for entry "+name);
                     NonRegFunctionalTests.testGeneric(zipfile.getName()+"/"+name, entry.getValue());
                 }
