diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index 7caf528..309f5d4 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -127,7 +127,7 @@
 
     check_call(["ls", "-l"])
 
-check_call_output(*popenargs, **kwargs):
+check_output(*popenargs, **kwargs):
    Run command with arguments and return its output as a byte string.
 
    If the exit code was non-zero it raises a CalledProcessError.  The
@@ -136,7 +136,7 @@
 
    The arguments are the same as for the Popen constructor.  Example:
 
-      output = subprocess.check_call_output(["ls", "-l", "/dev/null"])
+      output = subprocess.check_output(["ls", "-l", "/dev/null"])
 
 Exceptions
 ----------
@@ -152,7 +152,7 @@
 
 A ValueError will be raised if Popen is called with invalid arguments.
 
-check_call() and check_call_output() will raise CalledProcessError, if the
+check_call() and check_output() will raise CalledProcessError, if the
 called process returns a non-zero return code.
 
 
@@ -373,9 +373,9 @@
 # Exception classes used by this module.
 class CalledProcessError(Exception):
     """This exception is raised when a process run by check_call() or
-    check_call_output() returns a non-zero exit status.
+    check_output() returns a non-zero exit status.
     The exit status will be stored in the returncode attribute;
-    check_call_output() will also store the output in the output attribute.
+    check_output() will also store the output in the output attribute.
     """
     def __init__(self, returncode, cmd, output=None):
         self.returncode = returncode
@@ -418,7 +418,7 @@
     import pickle
 
 __all__ = ["Popen", "PIPE", "STDOUT", "call", "check_call",
-           "check_call_output", "CalledProcessError"]
+           "check_output", "CalledProcessError"]
 
 try:
     MAXFD = os.sysconf("SC_OPEN_MAX")
@@ -478,7 +478,7 @@
     return 0
 
 
-def check_call_output(*popenargs, **kwargs):
+def check_output(*popenargs, **kwargs):
     """Run command with arguments and return its output as a byte string.
 
     If the exit code was non-zero it raises a CalledProcessError.  The
@@ -487,15 +487,15 @@
 
     The arguments are the same as for the Popen constructor.  Example:
 
-    >>> check_call_output(["ls", "-l", "/dev/null"])
+    >>> check_output(["ls", "-l", "/dev/null"])
     'crw-rw-rw- 1 root root 1, 3 Oct 18  2007 /dev/null\n'
 
     The stdout argument is not allowed as it is used internally.
     To capture standard error in the result, use stderr=subprocess.STDOUT.
 
-    >>> check_call_output(["/bin/sh", "-c",
-                           "ls -l non_existant_file ; exit 0"],
-                          stderr=subprocess.STDOUT)
+    >>> check_output(["/bin/sh", "-c",
+                      "ls -l non_existant_file ; exit 0"],
+                     stderr=subprocess.STDOUT)
     'ls: non_existant_file: No such file or directory\n'
     """
     if 'stdout' in kwargs:
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
index 878b79b..ae8e888 100644
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -72,33 +72,33 @@
         else:
             self.fail("Expected CalledProcessError")
 
-    def test_check_call_output(self):
-        # check_call_output() function with zero return code
-        output = subprocess.check_call_output(
+    def test_check_output(self):
+        # check_output() function with zero return code
+        output = subprocess.check_output(
                 [sys.executable, "-c", "print 'BDFL'"])
         self.assertTrue('BDFL' in output)
 
-    def test_check_call_output_nonzero(self):
+    def test_check_output_nonzero(self):
         # check_call() function with non-zero return code
         try:
-            subprocess.check_call_output(
+            subprocess.check_output(
                     [sys.executable, "-c", "import sys; sys.exit(5)"])
         except subprocess.CalledProcessError, e:
             self.assertEqual(e.returncode, 5)
         else:
             self.fail("Expected CalledProcessError")
 
-    def test_check_call_output_stderr(self):
-        # check_call_output() function stderr redirected to stdout
-        output = subprocess.check_call_output(
+    def test_check_output_stderr(self):
+        # check_output() function stderr redirected to stdout
+        output = subprocess.check_output(
                 [sys.executable, "-c", "import sys; sys.stderr.write('BDFL')"],
                 stderr=subprocess.STDOUT)
         self.assertTrue('BDFL' in output)
 
-    def test_check_call_output_stdout_arg(self):
-        # check_call_output() function stderr redirected to stdout
+    def test_check_output_stdout_arg(self):
+        # check_output() function stderr redirected to stdout
         try:
-            output = subprocess.check_call_output(
+            output = subprocess.check_output(
                     [sys.executable, "-c", "print 'will not be run'"],
                     stdout=sys.stdout)
         except ValueError, e:
