diff --git a/Doc/library/enum.rst b/Doc/library/enum.rst
index ffc85fe..89a427c 100644
--- a/Doc/library/enum.rst
+++ b/Doc/library/enum.rst
@@ -694,12 +694,66 @@
 or as examples for creating one's own.
 
 
-AutoNumber
-^^^^^^^^^^
+Omitting values
+^^^^^^^^^^^^^^^
 
-Avoids having to specify the value for each enumeration member::
+In many use-cases one doesn't care what the actual value of an enumeration
+is. There are several ways to define this type of simple enumeration:
 
-    >>> class AutoNumber(Enum):
+- use instances of :class:`object` as the value
+- use a descriptive string as the value
+- use a tuple as the value and a custom :meth:`__new__` to replace the
+  tuple with an :class:`int` value
+
+Using any of these methods signifies to the user that these values are not
+important, and also enables one to add, remove, or reorder members without
+having to renumber the remaining members.
+
+Whichever method you choose, you should provide a :meth:`repr` that also hides
+the (unimportant) value::
+
+    >>> class NoValue(Enum):
+    ...     def __repr__(self):
+    ...         return '<%s.%s>' % (self.__class__.__name__, self.name)
+    ...
+
+
+Using :class:`object`
+"""""""""""""""""""""
+
+Using :class:`object` would look like::
+
+    >>> class Color(NoValue):
+    ...     red = object()
+    ...     green = object()
+    ...     blue = object()
+    ...
+    >>> Color.green
+    <Color.green>
+
+
+Using a descriptive string
+""""""""""""""""""""""""""
+
+Using a string as the value would look like::
+
+    >>> class Color(NoValue):
+    ...     red = 'stop'
+    ...     green = 'go'
+    ...     blue = 'too fast!'
+    ...
+    >>> Color.green
+    <Color.green>
+    >>> Color.green.value
+    'go'
+
+
+Using a custom :meth:`__new__`
+""""""""""""""""""""""""""""""
+
+Using an auto-numbering :meth:`__new__` would look like::
+
+    >>> class AutoNumber(NoValue):
     ...     def __new__(cls):
     ...         value = len(cls.__members__) + 1
     ...         obj = object.__new__(cls)
@@ -711,8 +765,11 @@
     ...     green = ()
     ...     blue = ()
     ...
-    >>> Color.green.value == 2
-    True
+    >>> Color.green
+    <Color.green>
+    >>> Color.green.value
+    2
+
 
 .. note::
 
@@ -853,7 +910,7 @@
 ^^^^^^^^^^^^
 
 Supported ``__dunder__`` names
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+""""""""""""""""""""""""""""""
 
 :attr:`__members__` is an :class:`OrderedDict` of ``member_name``:``member``
 items.  It is only available on the class.
@@ -864,7 +921,7 @@
 
 
 Supported ``_sunder_`` names
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+""""""""""""""""""""""""""""
 
 - ``_name_`` -- name of the member
 - ``_value_`` -- value of the member; can be set / modified in ``__new__``
@@ -896,7 +953,7 @@
     order is lost before it can be recorded.
 
 ``Enum`` member type
-~~~~~~~~~~~~~~~~~~~~
+""""""""""""""""""""
 
 :class:`Enum` members are instances of an :class:`Enum` class, and even
 though they are accessible as `EnumClass.member`, they should not be accessed
@@ -917,7 +974,7 @@
 
 
 Boolean value of ``Enum`` classes and members
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+"""""""""""""""""""""""""""""""""""""""""""""
 
 ``Enum`` members that are mixed with non-Enum types (such as
 :class:`int`, :class:`str`, etc.) are evaluated according to the mixed-in
@@ -932,7 +989,7 @@
 
 
 ``Enum`` classes with methods
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+"""""""""""""""""""""""""""""
 
 If you give your :class:`Enum` subclass extra methods, like the `Planet`_
 class above, those methods will show up in a :func:`dir` of the member,
diff --git a/Misc/ACKS b/Misc/ACKS
index 85a476c..d81a424 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -549,6 +549,7 @@
 Joseph Hackman
 Barry Haddow
 Philipp Hagemeister
+John Hagen
 Paul ten Hagen
 Rasmus Hahn
 Peter Haight
