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 30567)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/NeptuneReader.java	(revision 30568)
@@ -39,4 +39,5 @@
 import neptune.TridentObjectType;
 
+import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -103,12 +104,12 @@
 				Validator validator = schema.newValidator();
 				validator.validate(xmlFile);
-				System.out.println(xmlFile.getSystemId() + " is valid");
+				Main.info(xmlFile.getSystemId() + " is valid");
 				return true;
 			} catch (SAXException e) {
-				System.out.println(xmlFile.getSystemId() + " is NOT valid");
-				System.out.println("Reason: " + e.getLocalizedMessage());
+				Main.error(xmlFile.getSystemId() + " is NOT valid");
+				Main.error("Reason: " + e.getLocalizedMessage());
 			} catch (IOException e) {
-				System.out.println(xmlFile.getSystemId() + " is NOT valid");
-				System.out.println("Reason: " + e.getLocalizedMessage());
+			    Main.error(xmlFile.getSystemId() + " is NOT valid");
+			    Main.error("Reason: " + e.getLocalizedMessage());
 			} finally {
 				try {
@@ -119,5 +120,5 @@
 			}
 		} catch (FileNotFoundException e) {
-			System.err.println(e.getMessage());
+		    Main.error(e.getMessage());
 		}
 		
@@ -317,15 +318,15 @@
 						} else {
 							// TODO
-							System.out.println("TODO: handle StopPoint "+childId);
+							Main.info("TODO: handle StopPoint "+childId);
 						}
 
 					} else {
-						System.err.println("Unsupported child: "+childId);
+						Main.warn("Unsupported child: "+childId);
 					}
 				}
 			} else if (sa.getStopAreaExtension().getAreaType().equals(ChouetteAreaType.BOARDING_POSITION)) {
-				//System.out.println("skipping StopArea with type "+sa.getStopAreaExtension().getAreaType()+": "+sa.getObjectId());
+				//Main.info("skipping StopArea with type "+sa.getStopAreaExtension().getAreaType()+": "+sa.getObjectId());
 			} else {
-				System.err.println("Unsupported StopArea type: "+sa.getStopAreaExtension().getAreaType());
+			    Main.warn("Unsupported StopArea type: "+sa.getStopAreaExtension().getAreaType());
 			}
 		}
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 30567)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/OsmDownloader.java	(revision 30568)
@@ -15,5 +15,5 @@
 			try {
 				String oapiServer = Main.pref.get(OdConstants.PREF_OAPI, OdConstants.DEFAULT_OAPI);
-				System.out.println(oapiReq);
+				Main.info(oapiReq);
 				String oapiReqEnc = URLEncoder.encode(oapiReq, OdConstants.UTF8);
 				Main.main.menu.openLocation.openUrl(false, oapiServer+"data="+oapiReqEnc);
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 30567)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/archive/ArchiveReader.java	(revision 30568)
@@ -7,5 +7,9 @@
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import javax.xml.bind.JAXBException;
@@ -56,33 +60,60 @@
     
     protected abstract String getTaskMessage();
-        
-    public DataSet parseDoc(final ProgressMonitor progressMonitor) throws IOException, XMLStreamException, FactoryConfigurationError, JAXBException  {
-        
-        final File temp = OdUtils.createTempDir();
+    
+    protected Collection<File> getDocsToParse(final File temp, final ProgressMonitor progressMonitor) throws FileNotFoundException, IOException {
         final List<File> candidates = new ArrayList<>();
         
+        if (progressMonitor != null) {
+            progressMonitor.beginTask(getTaskMessage());
+        }
+        extractArchive(temp, candidates);
+        
+        if (promptUser && candidates.size() > 1) {
+            DialogPrompter<CandidateChooser> prompt = new DialogPrompter<CandidateChooser>() {
+                @Override
+                protected CandidateChooser buildDialog() {
+                    return new CandidateChooser(progressMonitor.getWindowParent(), candidates);
+                }
+            };
+            if (prompt.promptInEdt().getValue() == 1) {
+                return Collections.singleton(prompt.getDialog().getSelectedFile());
+            }
+        } else if (!candidates.isEmpty()) {
+            return candidates;
+        }
+        return Collections.emptyList();
+    }
+    
+    public Map<File, DataSet> parseDocs(final ProgressMonitor progressMonitor) throws IOException, XMLStreamException, FactoryConfigurationError, JAXBException {
+        Map<File, DataSet> result = new HashMap<>();
+        File temp = OdUtils.createTempDir();
         try {
+            file = null;
+            for (File f : getDocsToParse(temp, progressMonitor)) {
+                DataSet from = getDataForFile(f, progressMonitor);
+                if (from != null) {
+                    result.put(f, from);
+                }
+            }
+        } finally {
+            OdUtils.deleteDir(temp);
             if (progressMonitor != null) {
-                progressMonitor.beginTask(getTaskMessage());
+                progressMonitor.finishTask();
             }
-            extractArchive(temp, candidates);
-            
-            file = null;
-            
-            if (promptUser && candidates.size() > 1) {
-                DialogPrompter<CandidateChooser> prompt = new DialogPrompter<CandidateChooser>() {
-                    @Override
-                    protected CandidateChooser buildDialog() {
-                        return new CandidateChooser(progressMonitor.getWindowParent(), candidates);
-                    }
-                };
-                if (prompt.promptInEdt().getValue() == 1) {
-                    file = prompt.getDialog().getSelectedFile();
-                }
-            } else if (!candidates.isEmpty()) {
-                file = candidates.get(0);
+        }
+        return result;
+    }
+    
+    public DataSet parseDoc(final ProgressMonitor progressMonitor) throws IOException, XMLStreamException, FactoryConfigurationError, JAXBException  {
+        File temp = OdUtils.createTempDir();
+        
+        try {
+            file = null;        
+            Collection<File> files = getDocsToParse(temp, progressMonitor);
+            if (!files.isEmpty()) {
+                file = files.iterator().next();
             }
             
-            DataSet from = getDataForFile(progressMonitor);
+            DataSet from = getDataForFile(file, progressMonitor);
             if (from != null) {
                 ds = from;
@@ -100,45 +131,46 @@
     }
 
-    protected DataSet getDataForFile(final ProgressMonitor progressMonitor)
+    protected DataSet getDataForFile(File f, final ProgressMonitor progressMonitor)
             throws FileNotFoundException, IOException, XMLStreamException, FactoryConfigurationError, JAXBException {
-        if (file == null) {
+        if (f == null) {
             return null;
-        } else if (!file.exists()) {
-            Main.warn("File does not exist: "+file.getPath());
+        } else if (!f.exists()) {
+            Main.warn("File does not exist: "+f.getPath());
             return null;
         } else {
+            Main.info("Parsing file "+f.getName());
             DataSet from = null;
-            FileInputStream in = new FileInputStream(file);
+            FileInputStream in = new FileInputStream(f);
             ProgressMonitor instance = null;
             if (progressMonitor != null) {
                 instance = progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false);
             }
-            if (file.getName().toLowerCase().endsWith(OdConstants.CSV_EXT)) {
+            if (f.getName().toLowerCase().endsWith(OdConstants.CSV_EXT)) {
                 from = CsvReader.parseDataSet(in, handler, instance);
-            } else if (file.getName().toLowerCase().endsWith(OdConstants.KML_EXT)) {
+            } else if (f.getName().toLowerCase().endsWith(OdConstants.KML_EXT)) {
                 from = KmlReader.parseDataSet(in, instance);
-            } else if (file.getName().toLowerCase().endsWith(OdConstants.KMZ_EXT)) {
+            } else if (f.getName().toLowerCase().endsWith(OdConstants.KMZ_EXT)) {
                 from = KmzReader.parseDataSet(in, instance);
-            } else if (file.getName().toLowerCase().endsWith(OdConstants.XLS_EXT)) {
+            } else if (f.getName().toLowerCase().endsWith(OdConstants.XLS_EXT)) {
                 from = XlsReader.parseDataSet(in, handler, instance);
-            } else if (file.getName().toLowerCase().endsWith(OdConstants.ODS_EXT)) {
+            } else if (f.getName().toLowerCase().endsWith(OdConstants.ODS_EXT)) {
                 from = OdsReader.parseDataSet(in, handler, instance);
-            } else if (file.getName().toLowerCase().endsWith(OdConstants.SHP_EXT)) {
-                from = ShpReader.parseDataSet(in, file, handler, instance);
-            } else if (file.getName().toLowerCase().endsWith(OdConstants.MIF_EXT)) {
-                from = MifReader.parseDataSet(in, file, handler, instance);
-            } else if (file.getName().toLowerCase().endsWith(OdConstants.TAB_EXT)) {
-                from = TabReader.parseDataSet(in, file, handler, instance);
-            } else if (file.getName().toLowerCase().endsWith(OdConstants.GML_EXT)) {
+            } else if (f.getName().toLowerCase().endsWith(OdConstants.SHP_EXT)) {
+                from = ShpReader.parseDataSet(in, f, handler, instance);
+            } else if (f.getName().toLowerCase().endsWith(OdConstants.MIF_EXT)) {
+                from = MifReader.parseDataSet(in, f, handler, instance);
+            } else if (f.getName().toLowerCase().endsWith(OdConstants.TAB_EXT)) {
+                from = TabReader.parseDataSet(in, f, handler, instance);
+            } else if (f.getName().toLowerCase().endsWith(OdConstants.GML_EXT)) {
                 from = GmlReader.parseDataSet(in, handler, instance);
-            } else if (file.getName().toLowerCase().endsWith(OdConstants.XML_EXT)) {
-                if (OdPlugin.getInstance().xmlImporter.acceptFile(file)) {
+            } else if (f.getName().toLowerCase().endsWith(OdConstants.XML_EXT)) {
+                if (OdPlugin.getInstance().xmlImporter.acceptFile(f)) {
                     from = NeptuneReader.parseDataSet(in, handler, instance);
                 } else {
-                    System.err.println("Unsupported XML file: "+file.getName());
+                    System.err.println("Unsupported XML file: "+f.getName());
                 }
                 
             } else {
-                System.err.println("Unsupported file extension: "+file.getName());
+                System.err.println("Unsupported file extension: "+f.getName());
             }
             return from;
@@ -151,5 +183,4 @@
             if (entryName.toLowerCase().endsWith("."+ext)) {
                 candidates.add(file);
-                System.out.println(entryName);
                 break;
             }
@@ -159,5 +190,4 @@
                 || OdPlugin.getInstance().xmlImporter.acceptFile(file))) {
             candidates.add(file);
-            System.out.println(entryName);
         }
     }
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 30567)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/archive/SevenZipReader.java	(revision 30568)
@@ -11,4 +11,5 @@
 import java.io.OutputStream;
 import java.util.List;
+import java.util.Map;
 
 import javax.xml.bind.JAXBException;
@@ -57,5 +58,11 @@
     }
 
-    @Override protected String getTaskMessage() {
+    public static Map<File, DataSet> parseDataSets(InputStream in, AbstractDataSetHandler handler, ProgressMonitor instance, boolean promptUser) 
+            throws IOException, XMLStreamException, FactoryConfigurationError, JAXBException {
+        return new SevenZipReader(in, handler, promptUser).parseDocs(instance);
+    }
+
+    @Override
+    protected String getTaskMessage() {
         return tr("Reading 7Zip file...");
     }
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 30567)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/archive/ZipReader.java	(revision 30568)
@@ -10,4 +10,5 @@
 import java.io.InputStream;
 import java.util.List;
+import java.util.Map;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
@@ -36,4 +37,9 @@
 		return new ZipReader(in, handler, promptUser).parseDoc(instance);
 	}
+
+    public static Map<File, DataSet> parseDataSets(InputStream in, AbstractDataSetHandler handler, ProgressMonitor instance, boolean promptUser) 
+            throws IOException, XMLStreamException, FactoryConfigurationError, JAXBException {
+        return new ZipReader(in, handler, promptUser).parseDocs(instance);
+    }
 
     protected void extractArchive(final File temp, final List<File> candidates) throws IOException, FileNotFoundException {
@@ -75,5 +81,6 @@
     }
 
-    @Override protected String getTaskMessage() {
+    @Override
+    protected String getTaskMessage() {
         return tr("Reading Zip file...");
     }
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 30567)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/DefaultShpHandler.java	(revision 30568)
@@ -51,5 +51,5 @@
 		boolean res = Math.abs(a - b) <= Main.pref.getDouble(OdConstants.PREF_CRS_COMPARISON_TOLERANCE, OdConstants.DEFAULT_CRS_COMPARISON_TOLERANCE);
 		if (Main.pref.getBoolean(OdConstants.PREF_CRS_COMPARISON_DEBUG, false)) {
-			System.out.println("Comparing "+a+" and "+b+" -> "+res);
+			Main.debug("Comparing "+a+" and "+b+" -> "+res);
 		}
 		return res; 
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 30567)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GeographicReader.java	(revision 30568)
@@ -5,6 +5,8 @@
 
 import java.awt.Component;
+import java.awt.GraphicsEnvironment;
 import java.awt.Image;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
@@ -200,5 +202,5 @@
     
 	private static final void compareDebug(CoordinateReferenceSystem crs1, CoordinateReferenceSystem crs2) {
-		System.out.println("-- COMPARING "+crs1.getName()+" WITH "+crs2.getName()+" --");
+		Main.debug("-- COMPARING "+crs1.getName()+" WITH "+crs2.getName()+" --");
 		compareDebug("class", crs1.getClass(), crs2.getClass());
 		CoordinateSystem cs1 = crs1.getCoordinateSystem();
@@ -229,5 +231,5 @@
 			}
 		}
-		System.out.println("-- COMPARING FINISHED --");
+		Main.debug("-- COMPARING FINISHED --");
 	}
 	
@@ -245,5 +247,5 @@
 
 	private static final boolean compareDebug(String text, boolean result, Object o1, Object o2) {
-		System.out.println(text + ": " + result + "("+o1+", "+o2+")");
+	    Main.debug(text + ": " + result + "("+o1+", "+o2+")");
 		return result;
 	}
@@ -253,5 +255,5 @@
 			transform = CRS.findMathTransform(crs, wgs84);
 		} catch (OperationNotFoundException e) {
-			System.out.println(crs.getName()+": "+e.getMessage()); // Bursa wolf parameters required.
+			Main.info(crs.getName()+": "+e.getMessage()); // Bursa wolf parameters required.
 			
 			if (findSimiliarCrs) { 
@@ -267,5 +269,5 @@
     								Main.pref.getDouble(OdConstants.PREF_CRS_COMPARISON_TOLERANCE, OdConstants.DEFAULT_CRS_COMPARISON_TOLERANCE));
     						if (((AbstractCRS)candidate).equals((AbstractIdentifiedObject)crs, false)) {
-    							System.out.println("Found a potential CRS: "+candidate.getName());
+    							Main.info("Found a potential CRS: "+candidate.getName());
     							candidates.add(candidate);
     						} else if (Main.pref.getBoolean(OdConstants.PREF_CRS_COMPARISON_DEBUG, false)) {
@@ -281,5 +283,6 @@
 				
 				if (candidates.size() > 1) {
-					System.err.println("Found several potential CRS.");//TODO: ask user which one to use
+					Main.warn("Found several potential CRS: "+Arrays.toString(candidates.toArray()));
+					// TODO: ask user which one to use
 				}
 				
@@ -300,5 +303,5 @@
 						transform = handler.findMathTransform(crs, wgs84, false);
 					} catch (OperationNotFoundException ex) {
-						System.out.println(crs.getName()+": "+ex.getMessage()); // Bursa wolf parameters required.
+					    Main.warn(crs.getName()+": "+ex.getMessage()); // Bursa wolf parameters required.
 					}
 				} else {
@@ -310,15 +313,15 @@
 							}
 						} catch (OperationNotFoundException ex) {
-							System.out.println(crs.getName()+": "+ex.getMessage()); // Bursa wolf parameters required.
+						    Main.warn(crs.getName()+": "+ex.getMessage()); // Bursa wolf parameters required.
 						}
 					}
 				}
 				if (transform == null) {
-					// ask user before trying lenient method
-					if (warnLenientMethod(parent, crs)) {
+					// ask user before trying lenient method, unless in headless mode (unit tests)
+					if (!GraphicsEnvironment.isHeadless() && warnLenientMethod(parent, crs)) {
 						// User canceled
 						throw new UserCancelException();
 					}
-					System.out.println("Searching for a lenient math transform.");
+					Main.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 30567)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GmlReader.java	(revision 30568)
@@ -107,5 +107,5 @@
 	
 	private void findCRS(String srs) throws NoSuchAuthorityCodeException, FactoryException {
-		System.out.println("Finding CRS for "+srs);
+		Main.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/ShpReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/ShpReader.java	(revision 30567)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/ShpReader.java	(revision 30568)
@@ -158,11 +158,11 @@
 			} else {
 				// Debug unknown geometry
-				System.out.println("\ttype: "+geometry.getType());
-				System.out.println("\tbounds: "+geometry.getBounds());
-				System.out.println("\tdescriptor: "+desc);
-				System.out.println("\tname: "+geometry.getName());
-				System.out.println("\tvalue: "+geometry.getValue());
-				System.out.println("\tid: "+geometry.getIdentifier());
-				System.out.println("-------------------------------------------------------------");
+				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("-------------------------------------------------------------");
 			}
 			
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 30567)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/CsvReader.java	(revision 30568)
@@ -8,4 +8,5 @@
 import java.nio.charset.Charset;
 
+import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -43,5 +44,5 @@
 			if (csvHandler == null || csvHandler.getSeparator() == null || ";".equals(csvHandler.getSeparator())) {
 				// If default sep has been used, try comma
-				System.out.println(e.getMessage());
+				Main.warn(e.getMessage());
 				csvReader.sep = ",";
 				return csvReader.doParse(csvReader.splitLine(), instance);
@@ -54,5 +55,5 @@
 	@Override
 	protected void initResources(InputStream in, ProgressMonitor progressMonitor) throws IOException {
-		System.out.println("Parsing CSV file using charset "+charset+" and separator '"+sep+"'");
+		Main.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 30567)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/OdsDocument.java	(revision 30568)
@@ -11,4 +11,5 @@
 import org.jopendocument.io.SaxContentUnmarshaller;
 import org.jopendocument.model.OpenDocument;
+import org.openstreetmap.josm.Main;
 import org.xml.sax.InputSource;
 import org.xml.sax.XMLReader;
@@ -44,5 +45,5 @@
             	if (entry.getName().equals("content.xml")) {
                     rdr.setContentHandler(contentHandler);
-                    System.out.println("Parsing content.xml");
+                    Main.info("Parsing content.xml");
                     rdr.parse(getEntryInputSource(zis));
             		contentParsed = true;
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 30567)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/OdsReader.java	(revision 30568)
@@ -13,4 +13,5 @@
 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;
@@ -38,5 +39,5 @@
 	protected void initResources(InputStream in, ProgressMonitor progressMonitor) throws IOException {
 		try {
-			System.out.println("Parsing ODS file");
+			Main.info("Parsing ODS file");
 			doc = new OdsDocument(in);
 			List<OfficeSpreadsheet> spreadsheets = doc.getBody().getOfficeSpreadsheets();
@@ -62,5 +63,5 @@
 
 			if (rowIndex % 5000 == 0) {
-				System.out.println("Lines read: "+rowIndex);
+				Main.info("Lines read: "+rowIndex);
 			}
 
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 30567)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/SpreadSheetReader.java	(revision 30568)
@@ -100,5 +100,5 @@
 	
 	public DataSet doParse(String[] header, ProgressMonitor progressMonitor) throws IOException {
-		System.out.println("Header: "+Arrays.toString(header));
+		Main.info("Header: "+Arrays.toString(header));
 		
 		Map<ProjectionPatterns, List<CoordinateColumns>> projColumns = new HashMap<>();
@@ -175,5 +175,5 @@
 		}
 		
-		System.out.println("Loading data using projections "+message);
+		Main.info("Loading data using projections "+message);
 		
 		final DataSet ds = new DataSet();
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 30567)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/XlsReader.java	(revision 30568)
@@ -14,4 +14,5 @@
 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;
@@ -35,5 +36,5 @@
 	@Override
 	protected void initResources(InputStream in, ProgressMonitor progressMonitor) throws IOException {
-		System.out.println("Parsing XLS file");
+	    Main.info("Parsing XLS file");
 		try {
 			wb = new HSSFWorkbook(new POIFSFileSystem(in));
