diff --git a/.classpath b/.classpath
index 3fd419e..e330834 100644
--- a/.classpath
+++ b/.classpath
@@ -5,11 +5,11 @@
 	<classpathentry kind="src" path="test/src"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="lib" path="3rdparty/junit.jar"/>
-	<classpathentry kind="lib" path="3rdparty/util-concurrent.jar"/>
 	<classpathentry kind="lib" path="3rdparty/qdox-1.5.jar"/>
 	<classpathentry kind="lib" path="3rdparty/bsh-2.0b4.jar"/>
 	<classpathentry kind="lib" path="3rdparty/ant-launcher.jar"/>
 	<classpathentry kind="lib" path="3rdparty/ant.jar"/>
 	<classpathentry kind="var" path="TOOLS15_LIB"/>
+	<classpathentry kind="lib" path="3rdparty/backport-util-concurrent-2.2.jar"/>
 	<classpathentry kind="output" path="z_build"/>
 </classpath>
diff --git a/3rdparty/backport-util-concurrent-2.2.jar b/3rdparty/backport-util-concurrent-2.2.jar
new file mode 100644
index 0000000..338e546
--- /dev/null
+++ b/3rdparty/backport-util-concurrent-2.2.jar
Binary files differ
diff --git a/3rdparty/util-concurrent.jar b/3rdparty/util-concurrent.jar
deleted file mode 100644
index 66ad502..0000000
--- a/3rdparty/util-concurrent.jar
+++ /dev/null
Binary files differ
diff --git a/build.properties b/build.properties
index d2f0f69..197c976 100644
--- a/build.properties
+++ b/build.properties
@@ -16,6 +16,7 @@
 #
 beanshell.jar=bsh-2.0b4.jar
 qdox.jar=qdox-1.5.jar
+concurrent.jar=backport-util-concurrent-2.2.jar
 
 #
 # Names of distributions
diff --git a/build.xml b/build.xml
index 0491ec9..8f35290 100644
--- a/build.xml
+++ b/build.xml
@@ -101,7 +101,7 @@
         <include name="${beanshell.jar}" />
         <include name="junit.jar" />
         <include name="${qdox.jar}" />
-        <include name="util-concurrent.jar" />
+      	<include name="${concurrent.jar}" />
       </fileset>
     </path>
 
@@ -153,7 +153,7 @@
   
   <target name="test-15-v4">
     <ant inheritall="no" antfile="test/v4/build.xml" />
-    <ant inheritall="no" antfile="test/v4/build.xml" target="run-jdk14" /> 
+    <ant inheritall="no" antfile="test/v4/build.xml" target="run-jdk14" />
   </target>
 
   <target name="tmp">
@@ -198,7 +198,7 @@
     <antcall target="clean-unjar" />
     <antcall target="extract-qdox-jar" />
     <antcall target="extract-beanshell-jar" />
-    <antcall target="extract-util-concurrent-jar" />
+    <antcall target="extract-concurrent-jar" />
     <delete quiet="true" file="${jdk14.testng.jar}" />
     <jar destfile="${jdk14.testng.jar}" update="true">
       <manifest>
@@ -211,7 +211,7 @@
   
   <target name="dist-14-nobsh">
     <antcall target="clean-unjar" />
-    <antcall target="extract-util-concurrent-jar" />
+    <antcall target="extract-concurrent-jar" />
     <jar destfile="${other.jars.dir}/${jdk14.testng.nobsh.jar}" update="true">
       <manifest>
         <attribute name="Main-Class" value="org.testng.TestNG" />
@@ -238,8 +238,8 @@
            overwrite="true" />
   </target>
 
-  <target name="extract-util-concurrent-jar">
-    <unjar src="3rdparty/util-concurrent.jar"
+  <target name="extract-concurrent-jar">
+    <unjar src="3rdparty/${concurrent.jar}"
            dest="${build.3rdparty.dir}"
            overwrite="true" />
   </target>
@@ -297,7 +297,7 @@
                   excludes="test-output/**,report/**,v4/**" />
       <zipfileset dir="3rdparty"
                   prefix="3rdparty"
-                  includes="${qdox.jar},${beanshell.jar},util-concurrent.jar" />
+                  includes="${qdox.jar},${beanshell.jar},${concurrent.jar}" />
     </zip>
   </target>
   
diff --git a/src/jdk14/org/testng/internal/remote/SlavePool.java b/src/jdk14/org/testng/internal/remote/SlavePool.java
index b1aa6c8..396b3b4 100644
--- a/src/jdk14/org/testng/internal/remote/SlavePool.java
+++ b/src/jdk14/org/testng/internal/remote/SlavePool.java
@@ -1,7 +1,5 @@
 package org.testng.internal.remote;
 
-import edu.emory.mathcs.util.concurrent.LinkedBlockingQueue;
-
 import java.io.IOException;
 import java.net.Socket;
 import java.util.HashMap;
@@ -9,14 +7,15 @@
 
 import org.testng.remote.ConnectionInfo;
 
+import edu.emory.mathcs.backport.java.util.concurrent.LinkedBlockingQueue;
+
 /**
  * This class maintains a pool of slaves (represented by sockets).
  * 
  * @author cbeust
  */
 public class SlavePool {
-  private static LinkedBlockingQueue m_hosts =
-    new LinkedBlockingQueue();
+  private static LinkedBlockingQueue m_hosts = new LinkedBlockingQueue();
   private static Map<Socket, ConnectionInfo> m_connectionInfos =
     new HashMap<Socket, ConnectionInfo>();
   
diff --git a/src/jdk14/org/testng/internal/thread/ThreadUtil.java b/src/jdk14/org/testng/internal/thread/ThreadUtil.java
index 8f20560..5419b28 100644
--- a/src/jdk14/org/testng/internal/thread/ThreadUtil.java
+++ b/src/jdk14/org/testng/internal/thread/ThreadUtil.java
@@ -26,7 +26,7 @@
       return new ThreadFactoryImpl(name);
    }
 
-   public static class ThreadFactoryImpl implements IThreadFactory, edu.emory.mathcs.util.concurrent.ThreadFactory {
+   public static class ThreadFactoryImpl implements IThreadFactory, edu.emory.mathcs.backport.java.util.concurrent.ThreadFactory {
       private String m_methodName;
 
       public ThreadFactoryImpl(String name) {
diff --git a/src/jdk14/org/testng/internal/thread/port/CountDownAdapter.java b/src/jdk14/org/testng/internal/thread/port/CountDownAdapter.java
index 1043972..fb32a99 100644
--- a/src/jdk14/org/testng/internal/thread/port/CountDownAdapter.java
+++ b/src/jdk14/org/testng/internal/thread/port/CountDownAdapter.java
@@ -1,8 +1,9 @@
 package org.testng.internal.thread.port;
 
 import org.testng.internal.thread.ICountDown;
-import edu.emory.mathcs.util.concurrent.CountDownLatch;
-import edu.emory.mathcs.util.concurrent.TimeUnit;
+
+import edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch;
+import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
 
 /**
  * CountDownLatch adapter.
diff --git a/src/jdk14/org/testng/internal/thread/port/ExecutorAdapter.java b/src/jdk14/org/testng/internal/thread/port/ExecutorAdapter.java
index d13d3f3..a64a9fc 100644
--- a/src/jdk14/org/testng/internal/thread/port/ExecutorAdapter.java
+++ b/src/jdk14/org/testng/internal/thread/port/ExecutorAdapter.java
@@ -5,9 +5,9 @@
 import org.testng.internal.thread.IFutureResult;
 import org.testng.internal.thread.IThreadFactory;
 
-import edu.emory.mathcs.util.concurrent.ArrayBlockingQueue;
-import edu.emory.mathcs.util.concurrent.ThreadPoolExecutor;
-import edu.emory.mathcs.util.concurrent.TimeUnit;
+import edu.emory.mathcs.backport.java.util.concurrent.ArrayBlockingQueue;
+import edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor;
+import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
 
 /**
  * ThreadPoolExecutor adaptor.
@@ -21,7 +21,7 @@
             0L,
             TimeUnit.MILLISECONDS,
             new ArrayBlockingQueue(threadCount),
-            (edu.emory.mathcs.util.concurrent.ThreadFactory) tf.getThreadFactory());
+            (edu.emory.mathcs.backport.java.util.concurrent.ThreadFactory) tf.getThreadFactory());
    }
 
 
diff --git a/src/jdk14/org/testng/internal/thread/port/FutureResultAdapter.java b/src/jdk14/org/testng/internal/thread/port/FutureResultAdapter.java
index 4df965b..a5ca584 100644
--- a/src/jdk14/org/testng/internal/thread/port/FutureResultAdapter.java
+++ b/src/jdk14/org/testng/internal/thread/port/FutureResultAdapter.java
@@ -4,8 +4,8 @@
 import org.testng.internal.thread.IFutureResult;
 import org.testng.internal.thread.ThreadExecutionException;
 
-import edu.emory.mathcs.util.concurrent.ExecutionException;
-import edu.emory.mathcs.util.concurrent.Future;
+import edu.emory.mathcs.backport.java.util.concurrent.ExecutionException;
+import edu.emory.mathcs.backport.java.util.concurrent.Future;
 
 /**
  * IFutureResult implementation and Future adapter.
diff --git a/src/jdk14/org/testng/internal/thread/port/PooledExecutorAdapter.java b/src/jdk14/org/testng/internal/thread/port/PooledExecutorAdapter.java
index 81fcd41..a783533 100644
--- a/src/jdk14/org/testng/internal/thread/port/PooledExecutorAdapter.java
+++ b/src/jdk14/org/testng/internal/thread/port/PooledExecutorAdapter.java
@@ -3,10 +3,10 @@
 import org.testng.TestNGException;
 import org.testng.internal.thread.IPooledExecutor;
 
-import edu.emory.mathcs.util.concurrent.LinkedBlockingQueue;
-import edu.emory.mathcs.util.concurrent.RejectedExecutionException;
-import edu.emory.mathcs.util.concurrent.ThreadPoolExecutor;
-import edu.emory.mathcs.util.concurrent.TimeUnit;
+import edu.emory.mathcs.backport.java.util.concurrent.LinkedBlockingQueue;
+import edu.emory.mathcs.backport.java.util.concurrent.RejectedExecutionException;
+import edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor;
+import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
 
 /**
  * IPooledExecutor implementation based on ThreadPoolExecutor.
diff --git a/test-14/build.xml b/test-14/build.xml
index 53f4dd9..84e3b4b 100644
--- a/test-14/build.xml
+++ b/test-14/build.xml
@@ -17,9 +17,8 @@
 		<fileset dir="${lib.dir}">
 			<include name="junit.jar" />
 			<include name="${qdox.jar}" />
-			<include name="concurrent-1.3.4.jar" />
 			<include name="${beanshell.jar}"/>
-			<include name="util-concurrent.jar" />
+			<include name="${concurrent.jar}" />
 		</fileset>
 	</path>
 
@@ -88,9 +87,12 @@
 			<xmlfileset dir="${test14.dir}" includes="testng.xml"/>
 		</testng-14>
    	
+
 		<echo>                                -- Running JDK 1.4 tests (1.4)--</echo>
 		<echo>                                -- ${jdk15.testng.jar} --</echo>
-
+		<!--
+		JDK1.4 tests run with JDK5 are available through the test/build.xml
+		
 		<taskdef name="testng-15" 
             classname="org.testng.TestNGAntTask"
             classpath="${jdk15.testng.jar}"/>
@@ -100,7 +102,7 @@
            sourcedir="${test.src.dir}">
       <xmlfileset dir="${test14.dir}" includes="testng.xml"/>
      </testng-15>
-   	
+   	 -->
      <antcall target="clean.tmp" />
 	</target>
 
@@ -150,7 +152,7 @@
       <junitreport todir="${junit.report.dir}">
          <fileset dir="${testng.report.dir}">
             <include name="*.xml" />
-         	<exclude name="testng-failures.xml"/>
+         	<exclude name="testng-failed.xml"/>
          </fileset>
          <report format="noframes" todir="${junit.report.dir}" />
       </junitreport>
diff --git a/test-14/v4/build.xml b/test-14/v4/build.xml
index 5fc4d36..c0b2027 100644
--- a/test-14/v4/build.xml
+++ b/test-14/v4/build.xml
@@ -17,9 +17,8 @@
        <fileset dir="${lib.dir}">
           <include name="junit.jar" />
           <include name="${qdox.jar}" />
-          <include name="concurrent-1.3.4.jar" />
-         <include name="${beanshell.jar}"/>
-          <include name="util-concurrent.jar" />
+		  <include name="${beanshell.jar}"/>
+          <include name="${concurrent.jar}" />
        </fileset>
     </path>
 
@@ -87,6 +86,9 @@
 
      <echo message="                                -- Running JDK 1.4 tests (v4)--" />
      <echo message="                                -- ${jdk15.testng.jar} --" />
+   	<!--
+   	JDK1.4 tests run with JDK5 are available through the test/build.xml
+   	
      <taskdef name="testng-15" 
             classname="org.testng.TestNGAntTask"
             classpath="${jdk15.testng.jar}"/>
@@ -96,7 +98,7 @@
            sourcedir="${test.src.dir}">
       <xmlfileset dir="${test14.dir}" includes="testng.xml"/>
      </testng-15>
-
+		-->
      <antcall target="clean.tmp" />
    </target>
 
@@ -142,15 +144,15 @@
    <!-- Reports                                                              -->
    <!-- ==================================================================== -->
 
-   <target name="reports">
-      <junitreport todir="${junit.report.dir}">
-         <fileset dir="${testng.report.dir}">
-            <include name="*.xml" />
-         	<exclude name="testng-failures.xml"/>
-         </fileset>
-         <report format="noframes" todir="${junit.report.dir}" />
-      </junitreport>
-   </target>
+	<target name="reports">
+		<junitreport todir="${junit.report.dir}">
+			<fileset dir="${testng.report.dir}">
+				<include name="*.xml" />
+				<exclude name="testng-failed.xml"/>
+			</fileset>
+			<report format="noframes" todir="${junit.report.dir}" />
+		</junitreport>
+	</target>
 
    <target name="clean.tmp">
       <delete dir="${basedir}/test-output-tests" />
diff --git a/test/build.xml b/test/build.xml
index 1a8db7c..9c790e7 100644
--- a/test/build.xml
+++ b/test/build.xml
@@ -139,7 +139,7 @@
 		<junitreport todir="${junit.report.dir}">
 			<fileset dir="${testng.report.dir}">
 				<include name="*.xml"/>
-				<exclude name="testng-failures.xml"/>
+				<exclude name="testng-failed.xml"/>
 			</fileset>
 			<report format="noframes" todir="${junit.report.dir}"/>
 		</junitreport>
