Index: /trunk/src/org/openstreetmap/josm/data/gpx/GpxData.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/gpx/GpxData.java	(revision 2246)
+++ /trunk/src/org/openstreetmap/josm/data/gpx/GpxData.java	(revision 2247)
@@ -117,8 +117,8 @@
     public double length(){
         double result = 0.0; // in meters
-        WayPoint last = null;
 
-        for (GpxTrack trk : tracks)
-	    result += trk.length();
+        for (GpxTrack trk : tracks) {
+            result += trk.length();
+        }
 
         return result;
Index: /trunk/src/org/openstreetmap/josm/data/gpx/GpxTrack.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/gpx/GpxTrack.java	(revision 2246)
+++ /trunk/src/org/openstreetmap/josm/data/gpx/GpxTrack.java	(revision 2247)
@@ -5,9 +5,9 @@
 
 import java.util.Collection;
-import java.util.LinkedList;
+import java.util.concurrent.ConcurrentLinkedQueue;
 
 public class GpxTrack extends WithAttributes {
-    public Collection<Collection<WayPoint>> trackSegs
-        = new LinkedList<Collection<WayPoint>>();
+    public final Collection<Collection<WayPoint>> trackSegs
+    = new ConcurrentLinkedQueue<Collection<WayPoint>>();
 
     /**
@@ -18,15 +18,16 @@
         WayPoint last = null;
 
-	for (Collection<WayPoint> trkseg : trackSegs) {
-	    for (WayPoint tpt : trkseg) {
-		if(last != null){
-		    Double d = last.getCoor().greatCircleDistance(tpt.getCoor());
-		    if(!d.isNaN() && !d.isInfinite())
-			result += d;
-		}
-		last = tpt;
-	    }
-	    last = null; // restart for each track segment
-	}
+        for (Collection<WayPoint> trkseg : trackSegs) {
+            for (WayPoint tpt : trkseg) {
+                if(last != null){
+                    Double d = last.getCoor().greatCircleDistance(tpt.getCoor());
+                    if(!d.isNaN() && !d.isInfinite()) {
+                        result += d;
+                    }
+                }
+                last = tpt;
+            }
+            last = null; // restart for each track segment
+        }
         return result;
     }
Index: /trunk/src/org/openstreetmap/josm/data/gpx/WayPoint.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/gpx/WayPoint.java	(revision 2246)
+++ /trunk/src/org/openstreetmap/josm/data/gpx/WayPoint.java	(revision 2247)
@@ -41,14 +41,9 @@
      */
     public void setTime() {
-        for(String key : new String[]{"time", "cmt", "desc"})
+        if(attr.containsKey("time"))
         {
-            if(attr.containsKey("time"))
-            {
-                double t = DateUtils.fromString(attr.get("time").toString()).getTime();
-                if(t != 0.0)
-                {
-                    time = t / 1000.0; /* ms => seconds */
-                    break;
-                }
+            double t = DateUtils.fromString(attr.get("time").toString()).getTime();
+            if(t != 0.0) {
+                time = t / 1000.0; /* ms => seconds */
             }
         }
