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();
 	
