diff --git a/Doc/lib/libnntplib.tex b/Doc/lib/libnntplib.tex
index 5565289..8616fb9 100644
--- a/Doc/lib/libnntplib.tex
+++ b/Doc/lib/libnntplib.tex
@@ -132,23 +132,35 @@
 message text).
 \end{methoddesc}
 
-\begin{methoddesc}{newgroups}{date, time}
+\begin{methoddesc}{newgroups}{date, time, \optional{file}}
 Send a \samp{NEWGROUPS} command.  The \var{date} argument should be a
 string of the form \code{'\var{yy}\var{mm}\var{dd}'} indicating the
 date, and \var{time} should be a string of the form
 \code{'\var{hh}\var{mm}\var{ss}'} indicating the time.  Return a pair
 \code{(\var{response}, \var{groups})} where \var{groups} is a list of
 group names that are new since the given date and time.
+If the \var{file} parameter is supplied, then the output of the 
+\samp{NEWGROUPS} command is stored in a file.  If \var{file} is a string, 
+then the method will open a file object with that name, write to it 
+then close it.  If \var{file} is a file object, then it will start
+calling \method{write()} on it to store the lines of the command output.
+If \var{file} is supplied, then the returned \var{list} is an empty list.
 \end{methoddesc}
 
-\begin{methoddesc}{newnews}{group, date, time}
+\begin{methoddesc}{newnews}{group, date, time, \optional{file}}
 Send a \samp{NEWNEWS} command.  Here, \var{group} is a group name or
 \code{'*'}, and \var{date} and \var{time} have the same meaning as for
 \method{newgroups()}.  Return a pair \code{(\var{response},
 \var{articles})} where \var{articles} is a list of article ids.
+If the \var{file} parameter is supplied, then the output of the 
+\samp{NEWNEWS} command is stored in a file.  If \var{file} is a string, 
+then the method will open a file object with that name, write to it 
+then close it.  If \var{file} is a file object, then it will start
+calling \method{write()} on it to store the lines of the command output.
+If \var{file} is supplied, then the returned \var{list} is an empty list.
 \end{methoddesc}
 
-\begin{methoddesc}{list}{}
+\begin{methoddesc}{list}{\optional{file}}
 Send a \samp{LIST} command.  Return a pair \code{(\var{response},
 \var{list})} where \var{list} is a list of tuples.  Each tuple has the
 form \code{(\var{group}, \var{last}, \var{first}, \var{flag})}, where
@@ -157,6 +169,12 @@
 \code{'y'} if posting is allowed, \code{'n'} if not, and \code{'m'} if
 the newsgroup is moderated.  (Note the ordering: \var{last},
 \var{first}.)
+If the \var{file} parameter is supplied, then the output of the 
+\samp{LIST} command is stored in a file.  If \var{file} is a string, 
+then the method will open a file object with that name, write to it 
+then close it.  If \var{file} is a file object, then it will start
+calling \method{write()} on it to store the lines of the command output.
+If \var{file} is supplied, then the returned \var{list} is an empty list.
 \end{methoddesc}
 
 \begin{methoddesc}{group}{name}
@@ -168,9 +186,15 @@
 \var{name} is the group name.  The numbers are returned as strings.
 \end{methoddesc}
 
-\begin{methoddesc}{help}{}
+\begin{methoddesc}{help}{\optional{file}}
 Send a \samp{HELP} command.  Return a pair \code{(\var{response},
 \var{list})} where \var{list} is a list of help strings.
+If the \var{file} parameter is supplied, then the output of the 
+\samp{HELP} command is stored in a file.  If \var{file} is a string, 
+then the method will open a file object with that name, write to it 
+then close it.  If \var{file} is a file object, then it will start
+calling \method{write()} on it to store the lines of the command output.
+If \var{file} is supplied, then the returned \var{list} is an empty list.
 \end{methoddesc}
 
 \begin{methoddesc}{stat}{id}
@@ -205,7 +229,7 @@
 the method will open a file object with that name, write to it then close it.
 If \var{file} is a file object, then it will start calling
 \method{write()} on it to store the lines of the body.
-Return as for \method{head()}.  If \var{file} is supplied. Then
+Return as for \method{head()}.  If \var{file} is supplied, then
 the returned \var{list} is an empty list.
 \end{methoddesc}
 
@@ -218,7 +242,7 @@
 Send a \samp{SLAVE} command.  Return the server's \var{response}.
 \end{methoddesc}
 
-\begin{methoddesc}{xhdr}{header, string}
+\begin{methoddesc}{xhdr}{header, string, \optional{file}}
 Send an \samp{XHDR} command.  This command is not defined in the RFC
 but is a common extension.  The \var{header} argument is a header
 keyword, e.g. \code{'subject'}.  The \var{string} argument should have
@@ -228,6 +252,12 @@
 pairs \code{(\var{id}, \var{text})}, where \var{id} is an article id
 (as a string) and \var{text} is the text of the requested header for
 that article.
+If the \var{file} parameter is supplied, then the output of the 
+\samp{XHDR} command is stored in a file.  If \var{file} is a string, 
+then the method will open a file object with that name, write to it 
+then close it.  If \var{file} is a file object, then it will start
+calling \method{write()} on it to store the lines of the command output.
+If \var{file} is supplied, then the returned \var{list} is an empty list.
 \end{methoddesc}
 
 \begin{methoddesc}{post}{file}
@@ -251,21 +281,33 @@
 servers.
 \end{methoddesc}
 
-\begin{methoddesc}{xgtitle}{name}
+\begin{methoddesc}{xgtitle}{name, \optional{file}}
 Process an \samp{XGTITLE} command, returning a pair \code{(\var{response},
 \var{list})}, where \var{list} is a list of tuples containing
 \code{(\var{name}, \var{title})}.
 % XXX huh?  Should that be name, description?
+If the \var{file} parameter is supplied, then the output of the 
+\samp{XGTITLE} command is stored in a file.  If \var{file} is a string, 
+then the method will open a file object with that name, write to it 
+then close it.  If \var{file} is a file object, then it will start
+calling \method{write()} on it to store the lines of the command output.
+If \var{file} is supplied, then the returned \var{list} is an empty list.
 This is an optional NNTP extension, and may not be supported by all
 servers.
 \end{methoddesc}
 
-\begin{methoddesc}{xover}{start, end}
+\begin{methoddesc}{xover}{start, end, \optional{file}}
 Return a pair \code{(\var{resp}, \var{list})}.  \var{list} is a list
 of tuples, one for each article in the range delimited by the \var{start}
 and \var{end} article numbers.  Each tuple is of the form
 \code{(\var{article number}, \var{subject}, \var{poster}, \var{date},
 \var{id}, \var{references}, \var{size}, \var{lines})}.
+If the \var{file} parameter is supplied, then the output of the 
+\samp{XOVER} command is stored in a file.  If \var{file} is a string, 
+then the method will open a file object with that name, write to it 
+then close it.  If \var{file} is a file object, then it will start
+calling \method{write()} on it to store the lines of the command output.
+If \var{file} is supplied, then the returned \var{list} is an empty list.
 This is an optional NNTP extension, and may not be supported by all
 servers.
 \end{methoddesc}
diff --git a/Lib/nntplib.py b/Lib/nntplib.py
index d52286f..6299ba2 100644
--- a/Lib/nntplib.py
+++ b/Lib/nntplib.py
@@ -264,7 +264,7 @@
         self.putcmd(line)
         return self.getlongresp(file)
 
-    def newgroups(self, date, time):
+    def newgroups(self, date, time, file=None):
         """Process a NEWGROUPS command.  Arguments:
         - date: string 'yymmdd' indicating the date
         - time: string 'hhmmss' indicating the time
@@ -272,9 +272,9 @@
         - resp: server response if successful
         - list: list of newsgroup names"""
 
-        return self.longcmd('NEWGROUPS ' + date + ' ' + time)
+        return self.longcmd('NEWGROUPS ' + date + ' ' + time, file)
 
-    def newnews(self, group, date, time):
+    def newnews(self, group, date, time, file=None):
         """Process a NEWNEWS command.  Arguments:
         - group: group name or '*'
         - date: string 'yymmdd' indicating the date
@@ -284,14 +284,14 @@
         - list: list of article ids"""
 
         cmd = 'NEWNEWS ' + group + ' ' + date + ' ' + time
-        return self.longcmd(cmd)
+        return self.longcmd(cmd, file)
 
-    def list(self):
+    def list(self, file=None):
         """Process a LIST command.  Return:
         - resp: server response if successful
         - list: list of (group, last, first, flag) (strings)"""
 
-        resp, list = self.longcmd('LIST')
+        resp, list = self.longcmd('LIST', file)
         for i in range(len(list)):
             # Parse lines into "group last first flag"
             list[i] = tuple(list[i].split())
@@ -323,12 +323,12 @@
                         name = words[4].lower()
         return resp, count, first, last, name
 
-    def help(self):
+    def help(self, file=None):
         """Process a HELP command.  Returns:
         - resp: server response if successful
         - list: list of strings"""
 
-        return self.longcmd('HELP')
+        return self.longcmd('HELP',file)
 
     def statparse(self, resp):
         """Internal: parse the response of a STAT, NEXT or LAST command."""
@@ -414,7 +414,7 @@
 
         return self.shortcmd('SLAVE')
 
-    def xhdr(self, hdr, str):
+    def xhdr(self, hdr, str, file=None):
         """Process an XHDR command (optional server extension).  Arguments:
         - hdr: the header type (e.g. 'subject')
         - str: an article nr, a message id, or a range nr1-nr2
@@ -423,7 +423,7 @@
         - list: list of (nr, value) strings"""
 
         pat = re.compile('^([0-9]+) ?(.*)\n?')
-        resp, lines = self.longcmd('XHDR ' + hdr + ' ' + str)
+        resp, lines = self.longcmd('XHDR ' + hdr + ' ' + str, file)
         for i in range(len(lines)):
             line = lines[i]
             m = pat.match(line)
@@ -431,7 +431,7 @@
                 lines[i] = m.group(1, 2)
         return resp, lines
 
-    def xover(self,start,end):
+    def xover(self, start, end, file=None):
         """Process an XOVER command (optional server extension) Arguments:
         - start: start of range
         - end: end of range
@@ -440,7 +440,7 @@
         - list: list of (art-nr, subject, poster, date,
                          id, references, size, lines)"""
 
-        resp, lines = self.longcmd('XOVER ' + start + '-' + end)
+        resp, lines = self.longcmd('XOVER ' + start + '-' + end, file)
         xover_lines = []
         for line in lines:
             elem = line.split("\t")
@@ -457,7 +457,7 @@
                 raise NNTPDataError(line)
         return resp,xover_lines
 
-    def xgtitle(self, group):
+    def xgtitle(self, group, file=None):
         """Process an XGTITLE command (optional server extension) Arguments:
         - group: group name wildcard (i.e. news.*)
         Returns:
@@ -465,7 +465,7 @@
         - list: list of (name,title) strings"""
 
         line_pat = re.compile("^([^ \t]+)[ \t]+(.*)$")
-        resp, raw_lines = self.longcmd('XGTITLE ' + group)
+        resp, raw_lines = self.longcmd('XGTITLE ' + group, file)
         lines = []
         for raw_line in raw_lines:
             match = line_pat.search(raw_line.strip())
diff --git a/Misc/ACKS b/Misc/ACKS
index 29ea5c1..f99f658 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -86,6 +86,7 @@
 Daniel Calvelo
 Brett Cannon
 Mike Carlton
+Terry Carroll
 Luke Kenneth Casson Leighton
 Donn Cave
 Per Cederqvist
diff --git a/Misc/NEWS b/Misc/NEWS
index cf3b5f7..a90c8fc 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -118,6 +118,10 @@
 Library
 -------
 
+- Several methods of nntplib.NNTP have grown an optional file argument
+  which specifies a file where to divert the command's output
+  (already supported by the body() method).  (SF patch #720468)
+
 - The self-documenting XML server library DocXMLRPCServer was added.
 
 - Support for internationalized domain names has been added through
