More edits
diff --git a/Doc/howto/functional.rst b/Doc/howto/functional.rst
index 341c041..2e5a6a9 100644
--- a/Doc/howto/functional.rst
+++ b/Doc/howto/functional.rst
@@ -900,6 +900,16 @@
 as well as functions for combining several iterators.  This section
 will introduce the module's contents by showing small examples.
 
+The module's functions fall into a few broad classes:
+
+* Functions that create a new iterator based on an existing iterator.
+* Functions for treating an iterator's elements as function arguments.
+* Functions for selecting portions of an iterator's output.
+* A function for grouping an iterator's output.
+
+Creating new iterators
+''''''''''''''''''''''
+
 ``itertools.count(n)`` returns an infinite stream of
 integers, increasing by 1 each time.  You can optionally supply the
 starting number, which defaults to 0::
@@ -1000,6 +1010,9 @@
            0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ...
 
 
+Calling functions on elements
+'''''''''''''''''''''''''''''
+
 Two functions are used for calling other functions on the contents of an
 iterable.
 
@@ -1028,6 +1041,10 @@
     =>
       /usr/bin/java, /bin/python, /usr/bin/perl, /usr/bin/ruby
 
+
+Selecting elements
+''''''''''''''''''
+
 Another group of functions chooses a subset of an iterator's elements
 based on a predicate.
 
@@ -1074,6 +1091,9 @@
       1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ...
 
 
+Grouping elements
+'''''''''''''''''
+
 The last function I'll discuss, ``itertools.groupby(iter,
 key_func=None)``, is the most complicated.  ``key_func(elem)`` is a
 function that can compute a key value for each element returned by the
@@ -1119,15 +1139,16 @@
 ----------------------------------------------
 
 The ``functools`` module in Python 2.5 contains some higher-order
-functions.  A **higher-order function** takes functions as input and
-returns new functions.  The most useful tool in this module is the
-``partial()`` function.
+functions.  A **higher-order function** takes one or more functions as
+input and returns a new function.  The most useful tool in this module
+is the ``partial()`` function.
 
 For programs written in a functional style, you'll sometimes want to
 construct variants of existing functions that have some of the
 parameters filled in.  Consider a Python function ``f(a, b, c)``; you
-may wish to create a new function ``g(b, c)`` that was equivalent to
-``f(1, b, c)``.  This is called "partial function application".
+may wish to create a new function ``g(b, c)`` that's equivalent to
+``f(1, b, c)``; you're filling in a value for one of ``f()``'s parameters.  
+This is called "partial function application".
 
 The constructor for ``partial`` takes the arguments ``(function, arg1,
 arg2, ... kwarg1=value1, kwarg2=value2)``.  The resulting object is
@@ -1146,11 +1167,6 @@
     server_log = functools.partial(log, subsystem='server')
     server_log('Unable to open socket')
 
-There are also third-party modules, such as Collin Winter's
-`functional package <http://cheeseshop.python.org/pypi/functional>`__,
-that are intended for use in functional-style programs.  See below
-for a section describing the ``functional`` mdoule.
-
 
 The operator module
 -------------------