Index: applications/editors/josm/plugins/dataimport/build.xml
===================================================================
--- applications/editors/josm/plugins/dataimport/build.xml	(revision 19503)
+++ applications/editors/josm/plugins/dataimport/build.xml	(revision 19681)
@@ -32,5 +32,5 @@
 	<property name="commit.message" value="Changed constructor signature, updated build.xml" />
 	<!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-	<property name="plugin.main.version" value="2851" />
+	<property name="plugin.main.version" value="2907" />
 
 	<!--
Index: applications/editors/josm/plugins/dataimport/src/org/openstreetmap/josm/plugins/dataimport/io/TangoGPS.java
===================================================================
--- applications/editors/josm/plugins/dataimport/src/org/openstreetmap/josm/plugins/dataimport/io/TangoGPS.java	(revision 19503)
+++ applications/editors/josm/plugins/dataimport/src/org/openstreetmap/josm/plugins/dataimport/io/TangoGPS.java	(revision 19681)
@@ -13,4 +13,6 @@
 import java.io.InputStreamReader;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
 
 import javax.swing.JOptionPane;
@@ -20,5 +22,6 @@
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.gpx.GpxData;
-import org.openstreetmap.josm.data.gpx.GpxTrack;
+import org.openstreetmap.josm.data.gpx.ImmutableGpxTrackSegment;
+import org.openstreetmap.josm.data.gpx.SingleSegmentGpxTrack;
 import org.openstreetmap.josm.data.gpx.WayPoint;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
@@ -46,8 +49,5 @@
 	public void importData(File file, ProgressMonitor progressMonitor) throws IOException {
 		// create the data tree
-		GpxData data = new GpxData();
-		GpxTrack currentTrack = new GpxTrack();
-		data.tracks.add(currentTrack);
-		ArrayList<WayPoint> currentTrackSeg = new ArrayList<WayPoint>();
+		List<WayPoint> currentTrackSeg = new ArrayList<WayPoint>();
 
 		int imported = 0;
@@ -79,5 +79,6 @@
 			failure = failure - imported;
 			if(imported > 0) {
-				currentTrack.trackSegs.add(currentTrackSeg);
+				GpxData data = new GpxData();
+				data.tracks.add(new SingleSegmentGpxTrack(new ImmutableGpxTrackSegment(currentTrackSeg), Collections.<String, Object>emptyMap()));
 				data.recalculateBounds();
 				data.storageFile = file;
Index: applications/editors/josm/plugins/dataimport/src/org/openstreetmap/josm/plugins/dataimport/io/Tcx.java
===================================================================
--- applications/editors/josm/plugins/dataimport/src/org/openstreetmap/josm/plugins/dataimport/io/Tcx.java	(revision 19503)
+++ applications/editors/josm/plugins/dataimport/src/org/openstreetmap/josm/plugins/dataimport/io/Tcx.java	(revision 19681)
@@ -8,4 +8,5 @@
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 
 import javax.xml.bind.JAXBContext;
@@ -19,5 +20,5 @@
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.gpx.GpxData;
-import org.openstreetmap.josm.data.gpx.GpxTrack;
+import org.openstreetmap.josm.data.gpx.ImmutableGpxTrack;
 import org.openstreetmap.josm.data.gpx.WayPoint;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
@@ -159,10 +160,9 @@
                             XMLGregorianCalendar startTime = activityLap
                                     .getStartTime();
-                            GpxTrack currentTrack = new GpxTrack();
-                            gpxData.tracks.add(currentTrack);
+                            Collection<Collection<WayPoint>> currentTrack = new ArrayList<Collection<WayPoint>>();
                             for (TrackT track : activityLap.getTrack()) {
                                 if (track.getTrackpoint() != null) {
                                     Collection<WayPoint> currentTrackSeg = new ArrayList<WayPoint>();
-                                    currentTrack.trackSegs.add(currentTrackSeg);
+                                    currentTrack.add(currentTrackSeg);
                                     for (TrackpointT tp :
                                            track.getTrackpoint()) {
@@ -182,4 +182,5 @@
                                 }
                             }
+                            gpxData.tracks.add(new ImmutableGpxTrack(currentTrack, Collections.<String, Object>emptyMap()));
                         }
                     }
@@ -197,10 +198,9 @@
             for (CourseT course : tcd.getCourses().getCourse()) {
                 if (course.getTrack() != null) {
-                    GpxTrack currentTrack = new GpxTrack();
-                    gpxData.tracks.add(currentTrack);
+                    Collection<Collection<WayPoint>> currentTrack = new ArrayList<Collection<WayPoint>>();
                     for (TrackT track : course.getTrack()) {
                         if (track.getTrackpoint() != null) {
                             Collection<WayPoint> currentTrackSeg = new ArrayList<WayPoint>();
-                            currentTrack.trackSegs.add(currentTrackSeg);
+                            currentTrack.add(currentTrackSeg);
                             for (TrackpointT tp : track.getTrackpoint()) {
                                 WayPoint waypt = convertPoint(tp);
@@ -212,4 +212,5 @@
                         }
                     }
+                    gpxData.tracks.add(new ImmutableGpxTrack(currentTrack, Collections.<String, Object>emptyMap()));
                 }
             }
