diff --git a/CHANGES b/CHANGES
index 86fcfa6..d18b204 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,9 @@
+3.0.4
+=====
+
+- Fixed inability to forcibly terminate the process if there are pending workers
+
+
 3.0.3
 =====
 
diff --git a/concurrent/futures/process.py b/concurrent/futures/process.py
index 665da8e..812552b 100644
--- a/concurrent/futures/process.py
+++ b/concurrent/futures/process.py
@@ -77,7 +77,7 @@
     for t, q in items:
         q.put(None)
     for t, q in items:
-        t.join()
+        t.join(sys.maxint)
 
 # Controls how many more calls than processes will be queued in the call queue.
 # A smaller number will mean that processes spend more time idle waiting for
@@ -232,7 +232,7 @@
                 # some multiprocessing.Queue methods may deadlock on Mac OS
                 # X.
                 for p in processes:
-                    p.join()
+                    p.join(sys.maxint)
                 call_queue.close()
                 return
         del executor
@@ -347,7 +347,7 @@
             # Wake up queue management thread
             self._result_queue.put(None)
             if wait:
-                self._queue_management_thread.join()
+                self._queue_management_thread.join(sys.maxint)
         # To reduce the risk of openning too many files, remove references to
         # objects that use file descriptors.
         self._queue_management_thread = None
diff --git a/concurrent/futures/thread.py b/concurrent/futures/thread.py
index cee65d0..85ab4b7 100644
--- a/concurrent/futures/thread.py
+++ b/concurrent/futures/thread.py
@@ -36,7 +36,7 @@
     for t, q in items:
         q.put(None)
     for t, q in items:
-        t.join()
+        t.join(sys.maxint)
 
 atexit.register(_python_exit)
 
@@ -130,5 +130,5 @@
             self._work_queue.put(None)
         if wait:
             for t in self._threads:
-                t.join()
+                t.join(sys.maxint)
     shutdown.__doc__ = _base.Executor.shutdown.__doc__
diff --git a/setup.py b/setup.py
index 0e4524b..dfad9f4 100755
--- a/setup.py
+++ b/setup.py
@@ -1,4 +1,11 @@
 #!/usr/bin/env python
+from warnings import warn
+import sys
+
+if sys.version_info[0] > 2:
+    warn('This backport is meant only for Python 2.\n'
+         'Python 3 users do not need it, as the concurrent.futures '
+         'package is available in the standard library.')
 
 extras = {}
 try:
@@ -8,7 +15,7 @@
     from distutils.core import setup
 
 setup(name='futures',
-      version='3.0.3',
+      version='3.0.4',
       description='Backport of the concurrent.futures package from Python 3.2',
       author='Brian Quinlan',
       author_email='brian@sweetapp.com',
