diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt
index a0f1869..12e677d 100644
--- a/Lib/idlelib/NEWS.txt
+++ b/Lib/idlelib/NEWS.txt
@@ -7,11 +7,27 @@
 
 *Release date: xx-xxx-2003*
 
+- Implemented the 'interrupt' extension module, which allows a subthread
+  to raise a KeyboardInterrupt in the main thread.
+
+- Attempting to save the shell raised an error related to saving
+  breakpoints, which are not implemented in the shell
+
+- Provide a correct message when 'exit' or 'quit' are entered at the
+  IDLE command prompt  SF 695861
+
+- Eliminate extra blank line in shell output caused by not flushing
+  stdout when user code ends with an unterminated print. SF 695861
+
+- Moved responsibility for exception formatting (i.e. pruning IDLE internal
+  calls) out of rpc.py into the client and server.
+
 - Exit IDLE cleanly even when doing subprocess I/O
 
 - Handle subprocess interrupt in Windows with an RPC message.  
 
 - Calling Run will restart the subprocess even if user code is running.
+  SF RFE 661321
 
 - Restart the subprocess if it terminates itself. (VPython programs do that)
 
diff --git a/Lib/idlelib/rpc.py b/Lib/idlelib/rpc.py
index 9895ac8..615c1f4 100644
--- a/Lib/idlelib/rpc.py
+++ b/Lib/idlelib/rpc.py
@@ -192,7 +192,7 @@
 
     def asyncreturn(self, seq):
         self.debug("asyncreturn:%d:call getresponse(): " % seq)
-        response = self.getresponse(seq)
+        response = self.getresponse(seq, wait=None)
         self.debug(("asyncreturn:%d:response: " % seq), response)
         return self.decoderesponse(response)
 
@@ -211,17 +211,17 @@
     def mainloop(self):
         """Listen on socket until I/O not ready or EOF
 
-        pollpacket() will loop looking for seq number None, which never
-        comes.  The loop will exit when self.ioready() returns 0.
+        Main thread pollresponse() will loop looking for seq number None, which
+        never comes, and exit on EOFError.
 
         """
         try:
-            self.getresponse(None)
+            self.getresponse(myseq=None, wait=None)
         except EOFError:
             pass
 
-    def getresponse(self, myseq):
-        response = self._getresponse(myseq)
+    def getresponse(self, myseq, wait):
+        response = self._getresponse(myseq, wait)
         if response is not None:
             how, what = response
             if how == "OK":
@@ -236,13 +236,13 @@
         # XXX Check for other types -- not currently needed
         return obj
 
-    def _getresponse(self, myseq):
+    def _getresponse(self, myseq, wait):
         self.debug("_getresponse:myseq:", myseq)
         if threading.currentThread() is self.mainthread:
             # Main thread: does all reading of requests or responses
             # Loop here, blocking each time until socket is ready.
             while 1:
-                response = self.pollresponse(myseq, wait=None)
+                response = self.pollresponse(myseq, wait)
                 if response is not None:
                     return response
         else:
