diff --git a/Doc/library/queue.rst b/Doc/library/queue.rst
index aafd717..6ee9702 100644
--- a/Doc/library/queue.rst
+++ b/Doc/library/queue.rst
@@ -2,17 +2,15 @@
 ===========================================
 
 .. module:: Queue
-   :synopsis: Old name for the queue module.
-
-.. module:: queue
    :synopsis: A synchronized queue class.
 
 .. note::
-   The :mod:`Queue` module has been renamed to :mod:`queue` in Python 3.0.  It
-   is importable under both names in Python 2.6 and the rest of the 2.x series.
+   The :mod:`Queue` module has been renamed to :mod:`queue` in Python 3.0.  The
+   :term:`2to3` tool will automatically adapt imports when converting your
+   sources to 3.0.
 
 
-The :mod:`queue` module implements multi-producer, multi-consumer queues.
+The :mod:`Queue` module implements multi-producer, multi-consumer queues.
 It is especially useful in threaded programming when information must be
 exchanged safely between multiple threads.  The :class:`Queue` class in this
 module implements all the required locking semantics.  It depends on the
@@ -26,7 +24,7 @@
 the entries are kept sorted (using the :mod:`heapq` module) and the
 lowest valued entry is retrieved first.
 
-The :mod:`queue` module defines the following classes and exceptions:
+The :mod:`Queue` module defines the following classes and exceptions:
 
 .. class:: Queue(maxsize)
 
@@ -75,7 +73,7 @@
 -------------
 
 Queue objects (:class:`Queue`, :class:`LifoQueue`, or :class:`PriorityQueue`)
-provide the public methods described below.  
+provide the public methods described below.
 
 
 .. method:: Queue.qsize()
@@ -170,20 +168,20 @@
 
 Example of how to wait for enqueued tasks to be completed::
 
-   def worker(): 
-       while True: 
-           item = q.get() 
-           do_work(item) 
-           q.task_done() 
+   def worker():
+       while True:
+           item = q.get()
+           do_work(item)
+           q.task_done()
 
-   q = Queue() 
-   for i in range(num_worker_threads): 
+   q = Queue()
+   for i in range(num_worker_threads):
         t = Thread(target=worker)
         t.setDaemon(True)
-        t.start() 
+        t.start()
 
    for item in source():
-       q.put(item) 
+       q.put(item)
 
    q.join()       # block until all tasks are done
 
diff --git a/Doc/library/threading.rst b/Doc/library/threading.rst
index 7658ebb..8cb84b3 100644
--- a/Doc/library/threading.rst
+++ b/Doc/library/threading.rst
@@ -8,7 +8,7 @@
 
 This module constructs higher-level threading interfaces on top of the  lower
 level :mod:`thread` module.
-See also the :mod:`mutex` and :mod:`queue` modules.
+See also the :mod:`mutex` and :mod:`Queue` modules.
 
 The :mod:`dummy_threading` module is provided for situations where
 :mod:`threading` cannot be used because :mod:`thread` is missing.
diff --git a/Doc/reference/simple_stmts.rst b/Doc/reference/simple_stmts.rst
index 1032df9..e5028ab 100644
--- a/Doc/reference/simple_stmts.rst
+++ b/Doc/reference/simple_stmts.rst
@@ -534,7 +534,7 @@
 If no expressions are present, :keyword:`raise` re-raises the last exception
 that was active in the current scope.  If no exception is active in the current
 scope, a :exc:`TypeError` exception is raised indicating that this is an error
-(if running under IDLE, a :exc:`queue.Empty` exception is raised instead).
+(if running under IDLE, a :exc:`Queue.Empty` exception is raised instead).
 
 Otherwise, :keyword:`raise` evaluates the expressions to get three objects,
 using ``None`` as the value of omitted expressions.  The first two objects are
diff --git a/Doc/tutorial/stdlib2.rst b/Doc/tutorial/stdlib2.rst
index 9da5213..459d765 100644
--- a/Doc/tutorial/stdlib2.rst
+++ b/Doc/tutorial/stdlib2.rst
@@ -16,7 +16,7 @@
 The :mod:`repr` module provides a version of :func:`repr` customized for
 abbreviated displays of large or deeply nested containers::
 
-   >>> import repr   
+   >>> import repr
    >>> repr.repr(set('supercalifragilisticexpialidocious'))
    "set(['a', 'c', 'd', 'e', 'f', 'g', ...])"
 
@@ -174,7 +174,7 @@
 
    class AsyncZip(threading.Thread):
        def __init__(self, infile, outfile):
-           threading.Thread.__init__(self)        
+           threading.Thread.__init__(self)
            self.infile = infile
            self.outfile = outfile
        def run(self):
@@ -198,9 +198,9 @@
 While those tools are powerful, minor design errors can result in problems that
 are difficult to reproduce.  So, the preferred approach to task coordination is
 to concentrate all access to a resource in a single thread and then use the
-:mod:`queue` module to feed that thread with requests from other threads.
-Applications using :class:`Queue` objects for inter-thread communication and
-coordination are easier to design, more readable, and more reliable.
+:mod:`Queue` module to feed that thread with requests from other threads.
+Applications using :class:`Queue.Queue` objects for inter-thread communication
+and coordination are easier to design, more readable, and more reliable.
 
 
 .. _tut-logging:
@@ -358,11 +358,11 @@
 results in decimal floating point and binary floating point. The difference
 becomes significant if the results are rounded to the nearest cent::
 
-   >>> from decimal import *       
+   >>> from decimal import *
    >>> Decimal('0.70') * Decimal('1.05')
    Decimal("0.7350")
    >>> .70 * 1.05
-   0.73499999999999999       
+   0.73499999999999999
 
 The :class:`Decimal` result keeps a trailing zero, automatically inferring four
 place significance from multiplicands with two place significance.  Decimal
@@ -380,7 +380,7 @@
    >>> sum([Decimal('0.1')]*10) == Decimal('1.0')
    True
    >>> sum([0.1]*10) == 1.0
-   False      
+   False
 
 The :mod:`decimal` module provides arithmetic with as much precision as needed::
 
diff --git a/Doc/whatsnew/2.6.rst b/Doc/whatsnew/2.6.rst
index 9337c23..a81243a 100644
--- a/Doc/whatsnew/2.6.rst
+++ b/Doc/whatsnew/2.6.rst
@@ -1965,7 +1965,7 @@
   used to hold character data.
   (Contributed by Achim Gaedke; :issue:`1137`.)
 
-* The :mod:`queue` module now provides queue classes that retrieve entries
+* The :mod:`Queue` module now provides queue classes that retrieve entries
   in different orders.  The :class:`PriorityQueue` class stores
   queued items in a heap and retrieves them in priority order,
   and :class:`LifoQueue` retrieves the most recently added entries first,
diff --git a/Lib/lib-old/Queue.py b/Lib/Queue.py
similarity index 100%
rename from Lib/lib-old/Queue.py
rename to Lib/Queue.py
diff --git a/Lib/idlelib/rpc.py b/Lib/idlelib/rpc.py
index cdfdac4..3bac6a3 100644
--- a/Lib/idlelib/rpc.py
+++ b/Lib/idlelib/rpc.py
@@ -35,7 +35,7 @@
 import struct
 import cPickle as pickle
 import threading
-import queue
+import Queue
 import traceback
 import copy_reg
 import types
@@ -117,8 +117,8 @@
 #----------------- end class RPCServer --------------------
 
 objecttable = {}
-request_queue = queue.Queue(0)
-response_queue = queue.Queue(0)
+request_queue = Queue.Queue(0)
+response_queue = Queue.Queue(0)
 
 
 class SocketIO(object):
@@ -413,7 +413,7 @@
             # send queued response if there is one available
             try:
                 qmsg = response_queue.get(0)
-            except queue.Empty:
+            except Queue.Empty:
                 pass
             else:
                 seq, response = qmsg
diff --git a/Lib/idlelib/run.py b/Lib/idlelib/run.py
index 8abbe50..7827c74 100644
--- a/Lib/idlelib/run.py
+++ b/Lib/idlelib/run.py
@@ -5,7 +5,7 @@
 import traceback
 import thread
 import threading
-import queue
+import Queue
 
 import CallTips
 import AutoComplete
@@ -85,7 +85,7 @@
                     continue
             try:
                 seq, request = rpc.request_queue.get(block=True, timeout=0.05)
-            except queue.Empty:
+            except Queue.Empty:
                 continue
             method, args, kwargs = request
             ret = method(*args, **kwargs)
diff --git a/Lib/test/test___all__.py b/Lib/test/test___all__.py
index ec58c14..57933d2 100644
--- a/Lib/test/test___all__.py
+++ b/Lib/test/test___all__.py
@@ -40,7 +40,7 @@
         self.check_all("configparser")
         self.check_all("Cookie")
         self.check_all("MimeWriter")
-        self.check_all("queue")
+        self.check_all("Queue")
         self.check_all("SimpleHTTPServer")
         self.check_all("SocketServer")
         self.check_all("StringIO")
diff --git a/Lib/test/test_dummy_thread.py b/Lib/test/test_dummy_thread.py
index fa87af9..f274e0a 100644
--- a/Lib/test/test_dummy_thread.py
+++ b/Lib/test/test_dummy_thread.py
@@ -7,7 +7,7 @@
 """
 import dummy_thread as _thread
 import time
-import queue
+import Queue
 import random
 import unittest
 from test import test_support
@@ -124,7 +124,7 @@
             """Use to test _thread.start_new_thread() passes args properly."""
             queue.put((arg1, arg2))
 
-        testing_queue = queue.Queue(1)
+        testing_queue = Queue.Queue(1)
         _thread.start_new_thread(arg_tester, (testing_queue, True, True))
         result = testing_queue.get()
         self.failUnless(result[0] and result[1],
@@ -148,7 +148,7 @@
             queue.put(_thread.get_ident())
 
         thread_count = 5
-        testing_queue = queue.Queue(thread_count)
+        testing_queue = Queue.Queue(thread_count)
         if test_support.verbose:
             print
             print "*** Testing multiple thread creation "\
diff --git a/Lib/test/test_py3kwarn.py b/Lib/test/test_py3kwarn.py
index 5a9421f..a456154 100644
--- a/Lib/test/test_py3kwarn.py
+++ b/Lib/test/test_py3kwarn.py
@@ -215,9 +215,7 @@
 
 class TestStdlibRenames(unittest.TestCase):
 
-    renames = {'Queue': 'queue',
-               'ConfigParser': 'configparser',
-              }
+    renames = {'ConfigParser': 'configparser'}
 
     def check_rename(self, module_name, new_module_name):
         """Make sure that:
diff --git a/Lib/test/test_queue.py b/Lib/test/test_queue.py
index 7cc9329..660e177 100644
--- a/Lib/test/test_queue.py
+++ b/Lib/test/test_queue.py
@@ -1,6 +1,6 @@
 # Some simple queue module tests, plus some failure conditions
 # to ensure the Queue locks remain stable.
-import queue
+import Queue
 import sys
 import threading
 import time
@@ -107,12 +107,12 @@
         try:
             q.put("full", block=0)
             self.fail("Didn't appear to block with a full queue")
-        except queue.Full:
+        except Queue.Full:
             pass
         try:
             q.put("full", timeout=0.01)
             self.fail("Didn't appear to time-out with a full queue")
-        except queue.Full:
+        except Queue.Full:
             pass
         # Test a blocking put
         self.do_blocking_test(q.put, ("full",), q.get, ())
@@ -124,12 +124,12 @@
         try:
             q.get(block=0)
             self.fail("Didn't appear to block with an empty queue")
-        except queue.Empty:
+        except Queue.Empty:
             pass
         try:
             q.get(timeout=0.01)
             self.fail("Didn't appear to time-out with an empty queue")
-        except queue.Empty:
+        except Queue.Empty:
             pass
         # Test a blocking get
         self.do_blocking_test(q.get, (), q.put, ('empty',))
@@ -191,13 +191,13 @@
 
 
 class QueueTest(BaseQueueTest):
-    type2test = queue.Queue
+    type2test = Queue.Queue
 
 class LifoQueueTest(BaseQueueTest):
-    type2test = queue.LifoQueue
+    type2test = Queue.LifoQueue
 
 class PriorityQueueTest(BaseQueueTest):
-    type2test = queue.PriorityQueue
+    type2test = Queue.PriorityQueue
 
 
 
@@ -205,21 +205,21 @@
 class FailingQueueException(Exception):
     pass
 
-class FailingQueue(queue.Queue):
+class FailingQueue(Queue.Queue):
     def __init__(self, *args):
         self.fail_next_put = False
         self.fail_next_get = False
-        queue.Queue.__init__(self, *args)
+        Queue.Queue.__init__(self, *args)
     def _put(self, item):
         if self.fail_next_put:
             self.fail_next_put = False
             raise FailingQueueException, "You Lose"
-        return queue.Queue._put(self, item)
+        return Queue.Queue._put(self, item)
     def _get(self):
         if self.fail_next_get:
             self.fail_next_get = False
             raise FailingQueueException, "You Lose"
-        return queue.Queue._get(self)
+        return Queue.Queue._get(self)
 
 class FailingQueueTest(unittest.TestCase, BlockingTestMixin):
 
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
index 81ef6d3..48c9346 100644
--- a/Lib/test/test_socket.py
+++ b/Lib/test/test_socket.py
@@ -9,7 +9,7 @@
 import thread, threading
 import time
 import traceback
-import queue
+import Queue
 import sys
 import os
 import array
@@ -96,7 +96,7 @@
         self.server_ready = threading.Event()
         self.client_ready = threading.Event()
         self.done = threading.Event()
-        self.queue = queue.Queue(1)
+        self.queue = Queue.Queue(1)
 
         # Do some munging to start the client test.
         methodname = self.id()
diff --git a/Misc/cheatsheet b/Misc/cheatsheet
index 8954e98..15c4d00 100644
--- a/Misc/cheatsheet
+++ b/Misc/cheatsheet
@@ -1044,7 +1044,7 @@
 super(type)         Create an unbound super object.  Used to call cooperative
                     superclass methods.
 sum(sequence,       Add the values in the sequence and return the sum.
-    [start]) 
+    [start])
 tuple(sequence)     Creates a tuple with same elements as sequence. If already
                     a tuple, return itself (not a copy).
                     Returns a type object [see module types] representing
@@ -1952,7 +1952,7 @@
 pyexpat          Interface to the Expay XML parser.
 py_compile       Routine to "compile" a .py file to a .pyc file.
 pyclbr           Parse a Python file and retrieve classes and methods.
-queue            A multi-producer, multi-consumer queue.
+Queue            A multi-producer, multi-consumer queue.
 quopri           Conversions to/from quoted-printable transport encoding.
 rand             Don't use unless you want compatibility with C's rand().
 random           Random variable generators
diff --git a/Tools/webchecker/wsgui.py b/Tools/webchecker/wsgui.py
index b2223c4..95c7ab9 100755
--- a/Tools/webchecker/wsgui.py
+++ b/Tools/webchecker/wsgui.py
@@ -10,7 +10,7 @@
 import websucker
 import os
 import threading
-import queue
+import Queue
 import time
 
 VERBOSE = 2
@@ -139,7 +139,7 @@
 
     def go(self, event=None):
         if not self.msgq:
-            self.msgq = queue.Queue(0)
+            self.msgq = Queue.Queue(0)
             self.check_msgq()
         if not self.sucker:
             self.sucker = SuckerThread(self.msgq)
