Close #14947: add missing cross-reference to Language Definition from the new dynamic type creation functions. Also cleaned up the general wording of the docs
diff --git a/Doc/library/types.rst b/Doc/library/types.rst
index 161d854..fc26afa 100644
--- a/Doc/library/types.rst
+++ b/Doc/library/types.rst
@@ -23,12 +23,15 @@
 
    Creates a class object dynamically using the appropriate metaclass.
 
-   The arguments are the components that make up a class definition: the
-   class name, the base classes (in order), the keyword arguments (such as
-   ``metaclass``) and the callback function to populate the class namespace.
+   The first three arguments are the components that make up a class
+   definition header: the class name, the base classes (in order), the
+   keyword arguments (such as ``metaclass``).
 
-   The *exec_body* callback should accept the class namespace as its sole
-   argument and update the namespace directly with the class contents.
+   The *exec_body* argument is a callback that is used to populate the
+   freshly created class namespace. It should accept the class namespace
+   as its sole argument and update the namespace directly with the class
+   contents. If no callback is provided, it has the same effect as passing
+   in ``lambda ns: ns``.
 
    .. versionadded:: 3.3
 
@@ -36,22 +39,24 @@
 
    Calculates the appropriate metaclass and creates the class namespace.
 
-   The arguments are the components that make up a class definition: the
-   class name, the base classes (in order) and the keyword arguments (such as
-   ``metaclass``).
+   The arguments are the components that make up a class definition header:
+   the class name, the base classes (in order) and the keyword arguments
+   (such as ``metaclass``).
 
    The return value is a 3-tuple: ``metaclass, namespace, kwds``
 
-   *metaclass* is the appropriate metaclass
-   *namespace* is the prepared class namespace
-   *kwds* is an updated copy of the passed in *kwds* argument with any
-   ``'metaclass'`` entry removed. If no *kwds* argument is passed in, this
-   will be an empty dict.
+   *metaclass* is the appropriate metaclass, *namespace* is the
+   prepared class namespace and *kwds* is an updated copy of the passed
+   in *kwds* argument with any ``'metaclass'`` entry removed. If no *kwds*
+   argument is passed in, this will be an empty dict.
 
    .. versionadded:: 3.3
 
 .. seealso::
 
+   :ref:`metaclasses`
+      Full details of the class creation process supported by these functions
+
    :pep:`3115` - Metaclasses in Python 3000
       Introduced the ``__prepare__`` namespace hook