diff --git a/Doc/library/email.message.rst b/Doc/library/email.message.rst
index bb9c7c7..edeed16 100644
--- a/Doc/library/email.message.rst
+++ b/Doc/library/email.message.rst
@@ -349,13 +349,13 @@
 
       If your application doesn't care whether the parameter was encoded as in
       :rfc:`2231`, you can collapse the parameter value by calling
-      :func:`email.Utils.collapse_rfc2231_value`, passing in the return value
+      :func:`email.utils.collapse_rfc2231_value`, passing in the return value
       from :meth:`get_param`.  This will return a suitably decoded Unicode
       string whn the value is a tuple, or the original string unquoted if it
       isn't.  For example::
 
          rawparam = msg.get_param('foo')
-         param = email.Utils.collapse_rfc2231_value(rawparam)
+         param = email.utils.collapse_rfc2231_value(rawparam)
 
       In any case, the parameter value (either the returned string, or the
       ``VALUE`` item in the 3-tuple) is always unquoted, unless *unquote* is set
@@ -412,7 +412,7 @@
       does not have a ``filename`` parameter, this method falls back to looking
       for the ``name`` parameter.  If neither is found, or the header is
       missing, then *failobj* is returned.  The returned string will always be
-      unquoted as per :meth:`Utils.unquote`.
+      unquoted as per :func:`email.utils.unquote`.
 
 
    .. method:: get_boundary([failobj])
@@ -420,7 +420,7 @@
       Return the value of the ``boundary`` parameter of the
       :mailheader:`Content-Type` header of the message, or *failobj* if either
       the header is missing, or has no ``boundary`` parameter.  The returned
-      string will always be unquoted as per :meth:`Utils.unquote`.
+      string will always be unquoted as per :func:`email.utils.unquote`.
 
 
    .. method:: set_boundary(boundary)
diff --git a/Doc/library/multiprocessing.rst b/Doc/library/multiprocessing.rst
index b545904..8243b10 100644
--- a/Doc/library/multiprocessing.rst
+++ b/Doc/library/multiprocessing.rst
@@ -1160,7 +1160,7 @@
       Connect a local manager object to a remote manager process:
 
       >>> from multiprocessing.managers import BaseManager
-      >>> m = BaseManager(address='127.0.0.1', authkey='abc))
+      >>> m = BaseManager(address='127.0.0.1', authkey='abc')
       >>> m.connect()
 
    .. method:: shutdown()
