diff --git a/Doc/Makefile.deps b/Doc/Makefile.deps
index 11c6de0..2fc3250 100644
--- a/Doc/Makefile.deps
+++ b/Doc/Makefile.deps
@@ -262,6 +262,7 @@
 	lib/libsimplexmlrpc.tex \
 	lib/libdocxmlrpc.tex \
 	lib/libpyexpat.tex \
+	lib/libfunctools.tex \
 	lib/xmldom.tex \
 	lib/xmldomminidom.tex \
 	lib/xmldompulldom.tex \
diff --git a/Doc/lib/lib.tex b/Doc/lib/lib.tex
index cf657c3..0691179 100644
--- a/Doc/lib/lib.tex
+++ b/Doc/lib/lib.tex
@@ -129,8 +129,8 @@
 % Functions, Functional, Generators and Iterators
 % XXX intro functional
 \input{libitertools}
-\input{libfunctional}
-\input{liboperator}       % from runtime - better with itertools and functional
+\input{libfunctools}
+\input{liboperator}       % from runtime - better with itertools and functools
 
 
 % =============
diff --git a/Doc/lib/libfunctional.tex b/Doc/lib/libfunctools.tex
similarity index 92%
rename from Doc/lib/libfunctional.tex
rename to Doc/lib/libfunctools.tex
index 9218454..a25a23a 100644
--- a/Doc/lib/libfunctional.tex
+++ b/Doc/lib/libfunctools.tex
@@ -1,7 +1,7 @@
-\section{\module{functional} ---
+\section{\module{functools} ---
          Higher order functions and operations on callable objects.}
 
-\declaremodule{standard}{functional}		% standard library, in Python
+\declaremodule{standard}{functools}		% standard library, in Python
 
 \moduleauthor{Peter Harris}{scav@blueyonder.co.uk}
 \moduleauthor{Raymond Hettinger}{python@rcn.com}
@@ -11,12 +11,12 @@
 
 \versionadded{2.5}
 
-The \module{functional} module is for higher-order functions: functions
+The \module{functools} module is for higher-order functions: functions
 that act on or return other functions. In general, any callable object can
 be treated as a function for the purposes of this module.
 
 
-The \module{functional} module defines the following function:
+The \module{functools} module defines the following function:
 
 \begin{funcdesc}{partial}{func\optional{,*args}\optional{, **keywords}}
 Return a new \class{partial} object which when called will behave like
diff --git a/Lib/test/test_functional.py b/Lib/test/test_functools.py
similarity index 97%
rename from Lib/test/test_functional.py
rename to Lib/test/test_functools.py
index 5078a2e..609e8f4 100644
--- a/Lib/test/test_functional.py
+++ b/Lib/test/test_functools.py
@@ -1,4 +1,4 @@
-import functional
+import functools
 import unittest
 from test import test_support
 from weakref import proxy
@@ -21,7 +21,7 @@
 
 class TestPartial(unittest.TestCase):
 
-    thetype = functional.partial
+    thetype = functools.partial
 
     def test_basic_examples(self):
         p = self.thetype(capture, 1, 2, a=10, b=20)
@@ -140,7 +140,7 @@
         join = self.thetype(''.join)
         self.assertEqual(join(data), '0123456789')
 
-class PartialSubclass(functional.partial):
+class PartialSubclass(functools.partial):
     pass
 
 class TestPartialSubclass(TestPartial):
diff --git a/Misc/NEWS b/Misc/NEWS
index 90407d6..24eb835 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -4,10 +4,10 @@
 
 (editors: check NEWS.help for information about editing NEWS using ReST.)
 
-What's New in Python 2.5 alpha 3?
+What's New in Python 2.5 beta 1?
 =================================
 
-*Release date: XX-MAY-2006*
+*Release date: XX-JUN-2006*
 
 Core and builtins
 -----------------
@@ -62,6 +62,11 @@
 Extension Modules
 -----------------
 
+- Patch #1478788 (modified version): The functional extension module has
+  been renamed to _functools and a functools Python wrapper module added.
+  This provides a home for additional function related utilities that are
+  not specifically about functional programming. See PEP 309.
+
 - Patch #1493701: performance enhancements for struct module.
 
 - Patch #1490224: time.altzone is now set correctly on Cygwin.
@@ -82,6 +87,7 @@
 - Calling Tk_Init twice is refused if the first call failed as that
   may deadlock.
 
+
 Library
 -------
 
@@ -142,6 +148,8 @@
 Documentation
 -------------
 
+
+
 What's New in Python 2.5 alpha 2?
 =================================
 
diff --git a/Modules/functionalmodule.c b/Modules/_functoolsmodule.c
similarity index 95%
rename from Modules/functionalmodule.c
rename to Modules/_functoolsmodule.c
index 38ef43a..54abb89 100644
--- a/Modules/functionalmodule.c
+++ b/Modules/_functoolsmodule.c
@@ -2,10 +2,10 @@
 #include "Python.h"
 #include "structmember.h"
 
-/* Functional module written and maintained 
+/* _functools module written and maintained 
    by Hye-Shik Chang <perky@FreeBSD.org>
    with adaptations by Raymond Hettinger <python@rcn.com>
-   Copyright (c) 2004, 2005 Python Software Foundation.
+   Copyright (c) 2004, 2005, 2006 Python Software Foundation.
    All rights reserved.
 */
 
@@ -199,7 +199,7 @@
 static PyTypeObject partial_type = {
 	PyObject_HEAD_INIT(NULL)
 	0,				/* ob_size */
-	"functional.partial",		/* tp_name */
+	"functools.partial",		/* tp_name */
 	sizeof(partialobject),		/* tp_basicsize */
 	0,				/* tp_itemsize */
 	/* methods */
@@ -245,14 +245,14 @@
 /* module level code ********************************************************/
 
 PyDoc_STRVAR(module_doc,
-"Tools for functional programming.");
+"Tools that operate on functions.");
 
 static PyMethodDef module_methods[] = {
  	{NULL,		NULL}		/* sentinel */
 };
 
 PyMODINIT_FUNC
-initfunctional(void)
+init_functools(void)
 {
 	int i;
 	PyObject *m;
@@ -262,7 +262,7 @@
 		NULL
 	};
 
-	m = Py_InitModule3("functional", module_methods, module_doc);
+	m = Py_InitModule3("_functools", module_methods, module_doc);
 	if (m == NULL)
 		return;
 
diff --git a/PC/VC6/pythoncore.dsp b/PC/VC6/pythoncore.dsp
index cf3200c..ec2ec3e 100644
--- a/PC/VC6/pythoncore.dsp
+++ b/PC/VC6/pythoncore.dsp
@@ -313,7 +313,7 @@
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\Modules\functionalmodule.c
+SOURCE=..\..\Modules\_functoolsmodule.c
 # End Source File
 # Begin Source File
 
diff --git a/PC/config.c b/PC/config.c
index be11d3f..b832d7c 100644
--- a/PC/config.c
+++ b/PC/config.c
@@ -54,7 +54,7 @@
 extern void init_winreg(void);
 extern void init_struct(void);
 extern void initdatetime(void);
-extern void initfunctional(void);
+extern void init_functools(void);
 extern void initzlib(void);
 
 extern void init_multibytecodec(void);
@@ -132,7 +132,7 @@
 	{"_winreg", init_winreg},
 	{"_struct", init_struct},
 	{"datetime", initdatetime},
-	{"functional", initfunctional},
+	{"_functools", init_functools},
 
 	{"xxsubtype", initxxsubtype},
 	{"zipimport", initzipimport},
diff --git a/PCbuild/pythoncore.vcproj b/PCbuild/pythoncore.vcproj
index c37e9b9..bb9f7af 100644
--- a/PCbuild/pythoncore.vcproj
+++ b/PCbuild/pythoncore.vcproj
@@ -515,10 +515,7 @@
 			RelativePath="..\Objects\funcobject.c">
 		</File>
 		<File
-			RelativePath="..\Modules\functionalmodule.c">
-		</File>
-		<File
-			RelativePath="..\Modules\functionalmodule.c">
+			RelativePath="..\Modules\_functoolsmodule.c">
 		</File>
 		<File
 			RelativePath="..\Python\future.c">
diff --git a/setup.py b/setup.py
index 0abafd9..9b2fac4 100644
--- a/setup.py
+++ b/setup.py
@@ -377,8 +377,8 @@
         exts.append( Extension("_heapq", ["_heapqmodule.c"]) )
         # operator.add() and similar goodies
         exts.append( Extension('operator', ['operator.c']) )
-        # functional
-        exts.append( Extension("functional", ["functionalmodule.c"]) )
+        # _functools
+        exts.append( Extension("_functools", ["_functoolsmodule.c"]) )
         # Python C API test module
         exts.append( Extension('_testcapi', ['_testcapimodule.c']) )
         # profilers (_lsprof is for cProfile.py)
