diff --git a/Include/object.h b/Include/object.h
index 1f749ec..9f679b0 100644
--- a/Include/object.h
+++ b/Include/object.h
@@ -297,7 +297,7 @@
 
 #define PyType_Check(op) PyObject_TypeCheck(op, &PyType_Type)
 
-extern DL_IMPORT(int) PyType_InitDict(PyTypeObject *);
+extern DL_IMPORT(int) PyType_Ready(PyTypeObject *);
 extern DL_IMPORT(PyObject *) PyType_GenericAlloc(PyTypeObject *, int);
 extern DL_IMPORT(PyObject *) PyType_GenericNew(PyTypeObject *,
 					       PyObject *, PyObject *);
diff --git a/Modules/xxsubtype.c b/Modules/xxsubtype.c
index 60d8c7d..5b8e254 100644
--- a/Modules/xxsubtype.c
+++ b/Modules/xxsubtype.c
@@ -212,9 +212,9 @@
 	if (m == NULL)
 		return;
 
-	if (PyType_InitDict(&spamlist_type) < 0)
+	if (PyType_Ready(&spamlist_type) < 0)
 		return;
-	if (PyType_InitDict(&spamdict_type) < 0)
+	if (PyType_Ready(&spamdict_type) < 0)
 		return;
 
 	d = PyModule_GetDict(m);
diff --git a/Objects/object.c b/Objects/object.c
index 137752d..0d9b3fe 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -1160,7 +1160,7 @@
 	PyObject **dictptr;
 
 	if (tp->tp_dict == NULL) {
-		if (PyType_InitDict(tp) < 0)
+		if (PyType_Ready(tp) < 0)
 			return NULL;
 	}
 
@@ -1207,7 +1207,7 @@
 	PyObject **dictptr;
 
 	if (tp->tp_dict == NULL) {
-		if (PyType_InitDict(tp) < 0)
+		if (PyType_Ready(tp) < 0)
 			return -1;
 	}
 
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 5d3255a..9f2857c 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -387,7 +387,7 @@
 			return NULL;
 		}
 		if (base_i->tp_dict == NULL) {
-			if (PyType_InitDict(base_i) < 0)
+			if (PyType_Ready(base_i) < 0)
 				return NULL;
 		}
 		candidate = solid_base(base_i);
@@ -656,7 +656,7 @@
 	type->tp_free = _PyObject_Del;
 
 	/* Initialize the rest */
-	if (PyType_InitDict(type) < 0) {
+	if (PyType_Ready(type) < 0) {
 		Py_DECREF(type);
 		return NULL;
 	}
@@ -719,7 +719,7 @@
 
 	/* Initialize this type (we'll assume the metatype is initialized) */
 	if (type->tp_dict == NULL) {
-		if (PyType_InitDict(type) < 0)
+		if (PyType_Ready(type) < 0)
 			return NULL;
 	}
 
@@ -1157,7 +1157,7 @@
 }
 
 int
-PyType_InitDict(PyTypeObject *type)
+PyType_Ready(PyTypeObject *type)
 {
 	PyObject *dict, *bases, *x;
 	PyTypeObject *base;
@@ -1185,7 +1185,7 @@
 
 	/* Initialize the base class */
 	if (base && base->tp_dict == NULL) {
-		if (PyType_InitDict(base) < 0)
+		if (PyType_Ready(base) < 0)
 			return -1;
 	}
 
@@ -1892,7 +1892,7 @@
 	return PyDict_SetItemString(type->tp_defined, "__new__", func);
 }
 
-/* This function is called by PyType_InitDict() to populate the type's
+/* This function is called by PyType_Ready() to populate the type's
    dictionary with method descriptors for function slots.  For each
    function slot (like tp_repr) that's defined in the type, one or
    more corresponding descriptors are added in the type's tp_defined
@@ -2335,7 +2335,7 @@
 }
 
 /* This is called at the very end of type_new() (even after
-   PyType_InitDict()) to complete the initialization of dynamic types.
+   PyType_Ready()) to complete the initialization of dynamic types.
    The dict argument is the dictionary argument passed to type_new(),
    which is the local namespace of the class statement, in other
    words, it contains the methods.  For each special method (like
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index e616230..cf2c777 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -115,9 +115,12 @@
 		Py_FatalError("Py_Initialize: can't make first thread");
 	(void) PyThreadState_Swap(tstate);
 
-	if (PyType_InitDict(&PyType_Type) < 0)
+	if (PyType_Ready(&PyType_Type) < 0)
 		Py_FatalError("Py_Initialize: can't initialize 'type'");
 
+	if (PyType_Ready(&PyList_Type) < 0)
+		Py_FatalError("Py_Initialize: can't initialize 'list'");
+
 	interp->modules = PyDict_New();
 	if (interp->modules == NULL)
 		Py_FatalError("Py_Initialize: can't make modules dictionary");
