diff --git a/Lib/copy_reg.py b/Lib/copy_reg.py
index 2bff142..8099403 100644
--- a/Lib/copy_reg.py
+++ b/Lib/copy_reg.py
@@ -81,6 +81,8 @@
 extension_registry = {}                 # key -> code
 inverted_registry = {}                  # code -> key
 extension_cache = {}                    # code -> object
+# Don't ever rebind those names:  cPickle grabs a reference to them when
+# it's initialized, and won't see a rebinding.
 
 def add_extension(module, name, code):
     """Register an extension code."""
diff --git a/Modules/cPickle.c b/Modules/cPickle.c
index 10f65d6..427b1da 100644
--- a/Modules/cPickle.c
+++ b/Modules/cPickle.c
@@ -95,10 +95,20 @@
 static PyObject *UnpicklingError;
 static PyObject *BadPickleGet;
 
-
-static PyObject *dispatch_table;
+/* As the name says, an empty tuple. */
 static PyObject *empty_tuple;
 
+/* copy_reg.dispatch_table, {type_object: pickling_function} */
+static PyObject *dispatch_table;
+
+/* For EXT[124] opcodes. */
+/* copy_reg.extension_registry, {(module_name, function_name): code} */
+static PyObject *extension_registry;
+/* copy_reg.inverted_registry, {code: (module_name, function_name)} */
+static PyObject *inverted_registry;
+/* copy_reg.extension_cache, {code: object} */
+static PyObject *extension_cache;
+
 static PyObject *__class___str, *__getinitargs___str, *__dict___str,
   *__getstate___str, *__setstate___str, *__name___str, *__reduce___str,
   *write_str, *append_str,
@@ -2592,15 +2602,17 @@
 
 	if (PyEval_GetRestricted()) {
 		/* Restricted execution, get private tables */
-		PyObject *m;
+		PyObject *m = PyImport_Import(copy_reg_str);
 
-		if (!( m=PyImport_Import(copy_reg_str)))  goto err;
-		self->dispatch_table=PyObject_GetAttr(m, dispatch_table_str);
+		if (m == NULL)
+			goto err;
+		self->dispatch_table = PyObject_GetAttr(m, dispatch_table_str);
 		Py_DECREF(m);
-		if (!( self->dispatch_table ))  goto err;
+		if (self->dispatch_table == NULL)
+			goto err;
 	}
 	else {
-		self->dispatch_table=dispatch_table;
+		self->dispatch_table = dispatch_table;
 		Py_INCREF(dispatch_table);
 	}
 
@@ -5077,8 +5089,19 @@
 	/* This is special because we want to use a different
 	   one in restricted mode. */
 	dispatch_table = PyObject_GetAttr(copy_reg, dispatch_table_str);
-	if (!dispatch_table)
-		return -1;
+	if (!dispatch_table) return -1;
+
+	extension_registry = PyObject_GetAttrString(copy_reg,
+				"extension_registry");
+	if (!extension_registry) return -1;
+
+	inverted_registry = PyObject_GetAttrString(copy_reg,
+				"inverted_registry");
+	if (!inverted_registry) return -1;
+
+	extension_cache = PyObject_GetAttrString(copy_reg,
+				"extension_cache");
+	if (!extension_cache) return -1;
 
 	Py_DECREF(copy_reg);
 
@@ -5168,7 +5191,7 @@
 {
 	PyObject *m, *d, *di, *v, *k;
 	int i;
-	char *rev="1.71";
+	char *rev = "1.71";	/* XXX when does this change? */
 	PyObject *format_version;
 	PyObject *compatible_formats;
 
@@ -5177,9 +5200,9 @@
 	PdataType.ob_type = &PyType_Type;
 
 	/* Initialize some pieces. We need to do this before module creation,
-	   so we're forced to use a temporary dictionary. :(
-	*/
-	di=PyDict_New();
+	 * so we're forced to use a temporary dictionary. :(
+	 */
+	di = PyDict_New();
 	if (!di) return;
 	if (init_stuff(di) < 0) return;
 
@@ -5190,7 +5213,8 @@
 
 	/* Add some symbolic constants to the module */
 	d = PyModule_GetDict(m);
-	PyDict_SetItemString(d,"__version__", v = PyString_FromString(rev));
+	v = PyString_FromString(rev);
+	PyDict_SetItemString(d, "__version__", v);
 	Py_XDECREF(v);
 
 	/* Copy data from di. Waaa. */
@@ -5202,9 +5226,16 @@
 	}
 	Py_DECREF(di);
 
-	format_version = PyString_FromString("1.3");
-	compatible_formats = Py_BuildValue("[sss]", "1.0", "1.1", "1.2");
-
+	/* These are purely informational; no code uses them. */
+	/* File format version we write. */
+	format_version = PyString_FromString("2.0");
+	/* Format versions we can read. */
+	compatible_formats = Py_BuildValue("[sssss]",
+		"1.0",	/* Original protocol 0 */
+		"1.1",	/* Protocol 0 + INST */
+		"1.2",	/* Original protocol 1 */
+		"1.3",	/* Protocol 1 + BINFLOAT */
+		"2.0");	/* Oritinal potocol 2 */
 	PyDict_SetItemString(d, "format_version", format_version);
 	PyDict_SetItemString(d, "compatible_formats", compatible_formats);
 	Py_XDECREF(format_version);
