diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 23e87b3..4ff0823 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -1377,11 +1377,11 @@
 		}
 #endif
 	}
-	else if (PyBytes_Check(obj)) {
+	else if (PyByteArray_Check(obj)) {
 		/* XXX Hopefully this is temporary */
-		size = PyBytes_GET_SIZE(obj);
+		size = PyByteArray_GET_SIZE(obj);
 		if (size == 1) {
-			ord = (long)((unsigned char)*PyBytes_AS_STRING(obj));
+			ord = (long)((unsigned char)*PyByteArray_AS_STRING(obj));
 			return PyLong_FromLong(ord);
 		}
 	}
@@ -1823,7 +1823,7 @@
 			Py_DECREF(iter);
 			return NULL;
 		}
-		if (PyBytes_Check(result)) {
+		if (PyByteArray_Check(result)) {
 			PyErr_SetString(PyExc_TypeError,
 				"sum() can't sum bytes [use b''.join(seq) instead]");
 			Py_DECREF(iter);
@@ -2266,7 +2266,7 @@
 	SETBUILTIN("True",		Py_True);
 	SETBUILTIN("bool",		&PyBool_Type);
 	SETBUILTIN("memoryview",        &PyMemoryView_Type);
-	SETBUILTIN("bytearray",		&PyBytes_Type);
+	SETBUILTIN("bytearray",		&PyByteArray_Type);
 	SETBUILTIN("bytes",		&PyString_Type);
 	SETBUILTIN("classmethod",	&PyClassMethod_Type);
 #ifndef WITHOUT_COMPLEX
diff --git a/Python/codecs.c b/Python/codecs.c
index 86941b1..554c1d2 100644
--- a/Python/codecs.c
+++ b/Python/codecs.c
@@ -345,7 +345,7 @@
 	goto onError;
     }
     v = PyTuple_GET_ITEM(result, 0);
-    if (PyBytes_Check(v)) {
+    if (PyByteArray_Check(v)) {
         char msg[100];
         PyOS_snprintf(msg, sizeof(msg),
                       "encoder %s returned buffer instead of bytes",
@@ -354,7 +354,7 @@
             v = NULL;
             goto onError;
         }
-        v = PyString_FromStringAndSize(PyBytes_AS_STRING(v), Py_SIZE(v));
+        v = PyString_FromStringAndSize(PyByteArray_AS_STRING(v), Py_SIZE(v));
     }
     else if (PyString_Check(v))
         Py_INCREF(v);
diff --git a/Python/getargs.c b/Python/getargs.c
index 7ca7672..2289bb6 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -971,7 +971,7 @@
 
 		/* Encode object */
 		if (!recode_strings &&
-                    (PyString_Check(arg) || PyBytes_Check(arg))) {
+                    (PyString_Check(arg) || PyByteArray_Check(arg))) {
 			s = arg;
 			Py_INCREF(s);
                         if (PyObject_AsCharBuffer(s, &ptr, &size) < 0)
@@ -1123,9 +1123,9 @@
 		break;
 	}
 
-	case 'Y': { /* PyBytes object */
+	case 'Y': { /* PyByteArray object */
 		PyObject **p = va_arg(*p_va, PyObject **);
-		if (PyBytes_Check(arg))
+		if (PyByteArray_Check(arg))
 			*p = arg;
 		else
 			return converterr("buffer", arg, msgbuf, bufsize);
diff --git a/Python/marshal.c b/Python/marshal.c
index ce828da..5672a06 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -1095,7 +1095,7 @@
 	}
 	if (wf.str != NULL) {
 		/* XXX Quick hack -- need to do this differently */
-		res = PyBytes_FromObject(wf.str);
+		res = PyByteArray_FromObject(wf.str);
 		Py_DECREF(wf.str);
 	}
 	return res;
@@ -1136,9 +1136,9 @@
 		rf.ptr = PyString_AS_STRING(data);
 		rf.end = rf.ptr + PyString_GET_SIZE(data);
 	}
-	else if (PyBytes_Check(data)) {
-		rf.ptr = PyBytes_AS_STRING(data);
-		rf.end = rf.ptr + PyBytes_GET_SIZE(data);
+	else if (PyByteArray_Check(data)) {
+		rf.ptr = PyByteArray_AS_STRING(data);
+		rf.end = rf.ptr + PyByteArray_GET_SIZE(data);
 	}
 	else {
 		PyErr_Format(PyExc_TypeError,
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index e2bddcb..7f6966a 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -175,7 +175,7 @@
 	if (!_PyLong_Init())
 		Py_FatalError("Py_Initialize: can't init longs");
 
-	if (!PyBytes_Init())
+	if (!PyByteArray_Init())
 		Py_FatalError("Py_Initialize: can't init bytes");
 
 	_PyFloat_Init();
@@ -460,7 +460,7 @@
 	PyList_Fini();
 	PySet_Fini();
 	PyString_Fini();
-	PyBytes_Fini();
+	PyByteArray_Fini();
 	PyLong_Fini();
 	PyFloat_Fini();
 	PyDict_Fini();
