diff --git a/Lib/urllib2.py b/Lib/urllib2.py
index 6bfbc29..fe32b2d 100644
--- a/Lib/urllib2.py
+++ b/Lib/urllib2.py
@@ -107,7 +107,7 @@
     from StringIO import StringIO
 
 from urllib import (unwrap, unquote, splittype, splithost, quote,
-     addinfourl, splitport, splitgophertype, splitquery,
+     addinfourl, splitport, splitquery,
      splitattr, ftpwrapper, noheaders, splituser, splitpasswd, splitvalue)
 
 # support for FileHandler, proxies via environment variables
@@ -164,9 +164,6 @@
     def __str__(self):
         return 'HTTP Error %s: %s' % (self.code, self.msg)
 
-class GopherError(URLError):
-    pass
-
 # copied from cookielib.py
 _cut_port_re = re.compile(r":\d+$")
 def request_host(request):
@@ -1342,22 +1339,3 @@
                     del self.timeout[k]
                     break
             self.soonest = min(self.timeout.values())
-
-class GopherHandler(BaseHandler):
-    def gopher_open(self, req):
-        # XXX can raise socket.error
-        import gopherlib  # this raises DeprecationWarning in 2.5
-        host = req.get_host()
-        if not host:
-            raise GopherError('no host given')
-        host = unquote(host)
-        selector = req.get_selector()
-        type, selector = splitgophertype(selector)
-        selector, query = splitquery(selector)
-        selector = unquote(selector)
-        if query:
-            query = unquote(query)
-            fp = gopherlib.send_query(selector, query, host)
-        else:
-            fp = gopherlib.send_selector(selector, host)
-        return addinfourl(fp, noheaders(), req.get_full_url())
