Index: applications/editors/josm/plugins/opendata/modules/be.bruxelles/src/org/openstreetmap/josm/plugins/opendata/modules/be/bruxelles/BruxellesModule.java
===================================================================
--- applications/editors/josm/plugins/opendata/modules/be.bruxelles/src/org/openstreetmap/josm/plugins/opendata/modules/be/bruxelles/BruxellesModule.java	(revision 28142)
+++ applications/editors/josm/plugins/opendata/modules/be.bruxelles/src/org/openstreetmap/josm/plugins/opendata/modules/be/bruxelles/BruxellesModule.java	(revision 28143)
@@ -24,5 +24,5 @@
 	public BruxellesModule(ModuleInformation info) {
 		super(info);
-		handlers.add(new BDHandler());
+		handlers.add(BDHandler.class);
     }
 }
Index: applications/editors/josm/plugins/opendata/modules/be.datagovbe/src/org/openstreetmap/josm/plugins/opendata/modules/be/datagovbe/DataGovBeModule.java
===================================================================
--- applications/editors/josm/plugins/opendata/modules/be.datagovbe/src/org/openstreetmap/josm/plugins/opendata/modules/be/datagovbe/DataGovBeModule.java	(revision 28142)
+++ applications/editors/josm/plugins/opendata/modules/be.datagovbe/src/org/openstreetmap/josm/plugins/opendata/modules/be/datagovbe/DataGovBeModule.java	(revision 28143)
@@ -24,5 +24,5 @@
 	public DataGovBeModule(ModuleInformation info) {
 		super(info);
-		handlers.add(new ArchitecturalHeritageHandler());
+		handlers.add(ArchitecturalHeritageHandler.class);
     }
 }
Index: applications/editors/josm/plugins/opendata/modules/fr.cg41/src/org/openstreetmap/josm/plugins/opendata/modules/fr/cg41/Cg41Module.java
===================================================================
--- applications/editors/josm/plugins/opendata/modules/fr.cg41/src/org/openstreetmap/josm/plugins/opendata/modules/fr/cg41/Cg41Module.java	(revision 28142)
+++ applications/editors/josm/plugins/opendata/modules/fr.cg41/src/org/openstreetmap/josm/plugins/opendata/modules/fr/cg41/Cg41Module.java	(revision 28143)
@@ -25,6 +25,6 @@
 	public Cg41Module(ModuleInformation info) {
 		super(info);
-		handlers.add(new ArretsBusHandler());
-		handlers.add(new ZonesInondablesBrayeHandler());
+		handlers.add(ArretsBusHandler.class);
+		handlers.add(ZonesInondablesBrayeHandler.class);
     }
 }
Index: applications/editors/josm/plugins/opendata/modules/fr.datagouvfr/src/org/openstreetmap/josm/plugins/opendata/modules/fr/datagouvfr/DataGouvFrModule.java
===================================================================
--- applications/editors/josm/plugins/opendata/modules/fr.datagouvfr/src/org/openstreetmap/josm/plugins/opendata/modules/fr/datagouvfr/DataGouvFrModule.java	(revision 28142)
+++ applications/editors/josm/plugins/opendata/modules/fr.datagouvfr/src/org/openstreetmap/josm/plugins/opendata/modules/fr/datagouvfr/DataGouvFrModule.java	(revision 28143)
@@ -36,17 +36,17 @@
 	public DataGouvFrModule(ModuleInformation info) {
 		super(info);
-        handlers.add(new Etab1er2ndDegreHandler());
-        handlers.add(new EtabAEFEHandler());
-        handlers.add(new BibliothequesHandler());
-        handlers.add(new EtabSupHandler());
-        handlers.add(new AssainissementHandler());
-        handlers.add(new RegistreParcellaireHandler());
-        handlers.add(new GeoFlaHandler());
-        handlers.add(new PassageNiveauHandler());
-        handlers.add(new ROEHandler());
-        handlers.add(new ForetsPubliquesHandler());
-        handlers.add(new ReservesBiologiquesHandler());
-        handlers.add(new EauxDeSurfaceHandler());
-        handlers.add(new InventaireForestierNationalHandler());
+        handlers.add(Etab1er2ndDegreHandler.class);
+        handlers.add(EtabAEFEHandler.class);
+        handlers.add(BibliothequesHandler.class);
+        handlers.add(EtabSupHandler.class);
+        handlers.add(AssainissementHandler.class);
+        handlers.add(RegistreParcellaireHandler.class);
+        handlers.add(GeoFlaHandler.class);
+        handlers.add(PassageNiveauHandler.class);
+        handlers.add(ROEHandler.class);
+        handlers.add(ForetsPubliquesHandler.class);
+        handlers.add(ReservesBiologiquesHandler.class);
+        handlers.add(EauxDeSurfaceHandler.class);
+        handlers.add(InventaireForestierNationalHandler.class);
     }
 }
Index: applications/editors/josm/plugins/opendata/modules/fr.lemans/src/org/openstreetmap/josm/plugins/opendata/modules/fr/lemans/LeMansModule.java
===================================================================
--- applications/editors/josm/plugins/opendata/modules/fr.lemans/src/org/openstreetmap/josm/plugins/opendata/modules/fr/lemans/LeMansModule.java	(revision 28142)
+++ applications/editors/josm/plugins/opendata/modules/fr.lemans/src/org/openstreetmap/josm/plugins/opendata/modules/fr/lemans/LeMansModule.java	(revision 28143)
@@ -30,11 +30,11 @@
 	public LeMansModule(ModuleInformation info) {
 		super(info);
-		handlers.add(new ServicesCommunautairesMunicipauxHandler());
-		handlers.add(new CantonsSartheHandler());
-		handlers.add(new CommunesHandler());
-		handlers.add(new CodesPostauxHandler());
-		handlers.add(new CirconscriptionsLegislativesHandler());
-		handlers.add(new ConseilsQuartiersHandler());
-		handlers.add(new PointsApportVolontaireHandler());
+		handlers.add(ServicesCommunautairesMunicipauxHandler.class);
+		handlers.add(CantonsSartheHandler.class);
+		handlers.add(CommunesHandler.class);
+		handlers.add(CodesPostauxHandler.class);
+		handlers.add(CirconscriptionsLegislativesHandler.class);
+		handlers.add(ConseilsQuartiersHandler.class);
+		handlers.add(PointsApportVolontaireHandler.class);
     }
 }
Index: applications/editors/josm/plugins/opendata/modules/fr.paris/src/org/openstreetmap/josm/plugins/opendata/modules/fr/paris/ParisModule.java
===================================================================
--- applications/editors/josm/plugins/opendata/modules/fr.paris/src/org/openstreetmap/josm/plugins/opendata/modules/fr/paris/ParisModule.java	(revision 28142)
+++ applications/editors/josm/plugins/opendata/modules/fr.paris/src/org/openstreetmap/josm/plugins/opendata/modules/fr/paris/ParisModule.java	(revision 28143)
@@ -24,5 +24,5 @@
 	public ParisModule(ModuleInformation info) {
 		super(info);
-        handlers.add(new SanisettesHandler());
+        handlers.add(SanisettesHandler.class);
     }
 }
Index: applications/editors/josm/plugins/opendata/modules/fr.sncf/src/org/openstreetmap/josm/plugins/opendata/modules/fr/sncf/SncfModule.java
===================================================================
--- applications/editors/josm/plugins/opendata/modules/fr.sncf/src/org/openstreetmap/josm/plugins/opendata/modules/fr/sncf/SncfModule.java	(revision 28142)
+++ applications/editors/josm/plugins/opendata/modules/fr.sncf/src/org/openstreetmap/josm/plugins/opendata/modules/fr/sncf/SncfModule.java	(revision 28143)
@@ -24,5 +24,5 @@
 	public SncfModule(ModuleInformation info) {
 		super(info);
-		handlers.add(new EquipementsHandler());
+		handlers.add(EquipementsHandler.class);
     }
 }
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 28142)
+++ applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/ToulouseModule.java	(revision 28143)
@@ -61,42 +61,42 @@
 	public ToulouseModule(ModuleInformation info) {
 		super(info);
-        handlers.add(new SanisetteHandler());
-        handlers.add(new NumerosRueHandler());
-        handlers.add(new CommuneHandler());
-        handlers.add(new VoirieHandler());
-        handlers.add(new Zone30Handler());
-        handlers.add(new HorodateurHandler());
-        handlers.add(new VeloToulouseHandler());
-        handlers.add(new AltimetrieVoieHandler());
-        handlers.add(new MetroStationHandler());
-        handlers.add(new TramwayStationHandler());
-        handlers.add(new Parcelles1680Handler());
-        handlers.add(new Parcelles1830Handler());
-        handlers.add(new PMRHandler());
-        handlers.add(new PistesCyclablesHandler());
-        handlers.add(new BureauxVoteHandler());
-        handlers.add(new Club3eAgeHandler());
-        handlers.add(new CrechesHandler());
-        handlers.add(new EcoleElementaireHandler());
-        handlers.add(new EcoleMaternelleHandler());
-        handlers.add(new LudothequeHandler());
-        handlers.add(new MairieHandler());
-        handlers.add(new MairieAnnexeHandler());
-        handlers.add(new BibliothequesHandler());
-        handlers.add(new MuseeHandler());
-        handlers.add(new PolesTerritoriauxHandler());
-        handlers.add(new QuartiersHandler());
-        handlers.add(new SecteursHandler());
-        handlers.add(new StationEpurationHandler());
-        handlers.add(new TheatreHandler());
-        handlers.add(new RecupEmballageHandler());
-        handlers.add(new RecupVerreHandler());
-        handlers.add(new ReseauTisseoHandler());
-        handlers.add(new EcoleBalmaHandler());
-        handlers.add(new PetiteEnfanceEtJeunesseBalmaHandler());
-        handlers.add(new EquipementCulturelBalmaHandler());
-        handlers.add(new InstallationSportiveBalmaHandler());
-        handlers.add(new ChantiersPonctuelsHandler());
-        handlers.add(new ChantiersLineairesHandler());
+        handlers.add(SanisetteHandler.class);
+        handlers.add(NumerosRueHandler.class);
+        handlers.add(CommuneHandler.class);
+        handlers.add(VoirieHandler.class);
+        handlers.add(Zone30Handler.class);
+        handlers.add(HorodateurHandler.class);
+        handlers.add(VeloToulouseHandler.class);
+        handlers.add(AltimetrieVoieHandler.class);
+        handlers.add(MetroStationHandler.class);
+        handlers.add(TramwayStationHandler.class);
+        handlers.add(Parcelles1680Handler.class);
+        handlers.add(Parcelles1830Handler.class);
+        handlers.add(PMRHandler.class);
+        handlers.add(PistesCyclablesHandler.class);
+        handlers.add(BureauxVoteHandler.class);
+        handlers.add(Club3eAgeHandler.class);
+        handlers.add(CrechesHandler.class);
+        handlers.add(EcoleElementaireHandler.class);
+        handlers.add(EcoleMaternelleHandler.class);
+        handlers.add(LudothequeHandler.class);
+        handlers.add(MairieHandler.class);
+        handlers.add(MairieAnnexeHandler.class);
+        handlers.add(BibliothequesHandler.class);
+        handlers.add(MuseeHandler.class);
+        handlers.add(PolesTerritoriauxHandler.class);
+        handlers.add(QuartiersHandler.class);
+        handlers.add(SecteursHandler.class);
+        handlers.add(StationEpurationHandler.class);
+        handlers.add(TheatreHandler.class);
+        handlers.add(RecupEmballageHandler.class);
+        handlers.add(RecupVerreHandler.class);
+        handlers.add(ReseauTisseoHandler.class);
+        handlers.add(EcoleBalmaHandler.class);
+        handlers.add(PetiteEnfanceEtJeunesseBalmaHandler.class);
+        handlers.add(EquipementCulturelBalmaHandler.class);
+        handlers.add(InstallationSportiveBalmaHandler.class);
+        handlers.add(ChantiersPonctuelsHandler.class);
+        handlers.add(ChantiersLineairesHandler.class);
     }
 }
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 28142)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/OdPlugin.java	(revision 28143)
@@ -28,5 +28,4 @@
 import java.util.Map;
 
-import javax.swing.ImageIcon;
 import javax.swing.JMenu;
 import javax.swing.JMenuItem;
@@ -60,5 +59,4 @@
 import org.openstreetmap.josm.plugins.opendata.core.modules.ModuleHandler;
 import org.openstreetmap.josm.plugins.opendata.core.modules.ModuleInformation;
-import org.openstreetmap.josm.plugins.opendata.core.util.OdUtils;
 import org.openstreetmap.josm.tools.Pair;
 
@@ -115,5 +113,5 @@
         	Map<DataSetCategory, JMenu> catMenus = new HashMap<DataSetCategory, JMenu>();
         	JMenu moduleMenu = null;
-        	for (AbstractDataSetHandler handler: module.getHandlers()) {
+        	for (AbstractDataSetHandler handler: module.getNewlyInstanciatedHandlers()) {
         		if (handler.getDataURL() != null || (handler.getDataURLs() != null && !handler.getDataURLs().isEmpty())) {
         			if (moduleMenu == null) {
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 28142)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/actions/DownloadDataTask.java	(revision 28143)
@@ -66,5 +66,5 @@
 		this.handler = null;
 		for (Module module : ModuleHandler.moduleList) {
-			for (AbstractDataSetHandler handler : module.getHandlers()) {
+			for (AbstractDataSetHandler handler : module.getNewlyInstanciatedHandlers()) {
 				if (handler.acceptsUrl(url)) {
 					this.handler = handler;
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 28142)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/AbstractImporter.java	(revision 28143)
@@ -44,5 +44,5 @@
     protected final AbstractDataSetHandler findDataSetHandler(File file) {
     	for (Module module : ModuleHandler.moduleList) {
-			for (AbstractDataSetHandler dsh : module.getHandlers()) {
+			for (AbstractDataSetHandler dsh : module.getNewlyInstanciatedHandlers()) {
 				if (dsh.acceptsFile(file)) {
 					return dsh;
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 28142)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/AbstractModule.java	(revision 28143)
@@ -33,6 +33,8 @@
 public abstract class AbstractModule implements Module, OdConstants {
 
-	protected final List<AbstractDataSetHandler> handlers = new ArrayList<AbstractDataSetHandler>();
-	
+	protected final List<Class<? extends AbstractDataSetHandler>> handlers = new ArrayList<Class <? extends AbstractDataSetHandler>>();
+
+	private final List<AbstractDataSetHandler> instanciatedHandlers = new ArrayList<AbstractDataSetHandler>();
+
 	protected final ModuleInformation info;
 	
@@ -53,5 +55,5 @@
 	 */
 	@Override
-	public List<AbstractDataSetHandler> getHandlers() {
+	public List<Class<? extends AbstractDataSetHandler>> getHandlers() {
 		return handlers;
 	}
@@ -71,5 +73,5 @@
 	public SourceProvider getMapPaintStyleSourceProvider() {
 		final List<SourceEntry> sources = new ArrayList<SourceEntry>();
-		for (AbstractDataSetHandler handler : handlers) {
+		for (AbstractDataSetHandler handler : getInstanciatedHandlers()) {
 			ExtendedSourceEntry src;
 			if (handler != null && (src = handler.getMapPaintStyle()) != null) {
@@ -111,5 +113,5 @@
 	public SourceProvider getPresetSourceProvider() {
 		final List<SourceEntry> sources = new ArrayList<SourceEntry>();
-		for (AbstractDataSetHandler handler : handlers) {
+		for (AbstractDataSetHandler handler : getInstanciatedHandlers()) {
 			if (handler != null && handler.getTaggingPreset() != null) {
 				sources.add(handler.getTaggingPreset());
@@ -123,3 +125,27 @@
 		};
 	}
+	
+	@Override
+	public final List<AbstractDataSetHandler> getNewlyInstanciatedHandlers() {
+		List<AbstractDataSetHandler> result = new ArrayList<AbstractDataSetHandler>();
+		for (Class<? extends AbstractDataSetHandler> handlerClass : handlers) {
+			if (handlerClass != null) {
+				try {
+					result.add(handlerClass.newInstance());
+				} catch (InstantiationException e) {
+					System.err.println(e.getMessage());
+				} catch (IllegalAccessException e) {
+					System.err.println(e.getMessage());
+				}
+			}
+		}
+		return result;
+	}
+
+	private final List<AbstractDataSetHandler> getInstanciatedHandlers() {
+		if (instanciatedHandlers.isEmpty()) {
+			instanciatedHandlers.addAll(getNewlyInstanciatedHandlers());
+		}
+		return instanciatedHandlers;
+	}
 }
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 28142)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/Module.java	(revision 28143)
@@ -25,6 +25,8 @@
 	public String getDisplayedName();
 
-	public List<AbstractDataSetHandler> getHandlers();
-	
+	public List<Class<? extends AbstractDataSetHandler>> getHandlers();
+
+	public List<AbstractDataSetHandler> getNewlyInstanciatedHandlers();
+
 	public SourceProvider getMapPaintStyleSourceProvider();
 	
