diff --git a/Objects/complexobject.c b/Objects/complexobject.c
index 253f714..fa493d7 100644
--- a/Objects/complexobject.c
+++ b/Objects/complexobject.c
@@ -649,11 +649,7 @@
 	char s_buffer[256];
 	Py_ssize_t len;
 
-	if (PyString_Check(v)) {
-		s = PyString_AS_STRING(v);
-		len = PyString_GET_SIZE(v);
-	}
-	else if (PyUnicode_Check(v)) {
+	if (PyUnicode_Check(v)) {
 		if (PyUnicode_GET_SIZE(v) >= (Py_ssize_t)sizeof(s_buffer)) {
 			PyErr_SetString(PyExc_ValueError,
 				 "complex() literal too large to convert");
@@ -833,7 +829,7 @@
 		Py_INCREF(r);
 		return r;
 	}
-	if (PyString_Check(r) || PyUnicode_Check(r)) {
+	if (PyUnicode_Check(r)) {
 		if (i != NULL) {
 			PyErr_SetString(PyExc_TypeError,
 					"complex() can't take second arg"
@@ -842,7 +838,7 @@
                 }
 		return complex_subtype_from_string(type, r);
 	}
-	if (i != NULL && (PyString_Check(i) || PyUnicode_Check(i))) {
+	if (i != NULL && PyUnicode_Check(i)) {
 		PyErr_SetString(PyExc_TypeError,
 				"complex() second arg can't be a string");
 		return NULL;
diff --git a/Objects/exceptions.c b/Objects/exceptions.c
index 7afaac0..e900243 100644
--- a/Objects/exceptions.c
+++ b/Objects/exceptions.c
@@ -833,10 +833,7 @@
     /* XXX -- do all the additional formatting with filename and
        lineno here */
 
-    if (self->filename) {
-	if (PyString_Check(self->filename))
-	    filename = PyString_AsString(self->filename);
-	else if (PyUnicode_Check(self->filename))
+    if (self->filename && PyUnicode_Check(self->filename)) {
 	    filename = PyUnicode_AsString(self->filename);
     }
     have_lineno = (self->lineno != NULL) && PyInt_CheckExact(self->lineno);
diff --git a/Objects/listobject.c b/Objects/listobject.c
index 50d9d9b..3de07c9 100644
--- a/Objects/listobject.c
+++ b/Objects/listobject.c
@@ -1942,6 +1942,7 @@
 is_default_cmp(PyObject *cmpfunc)
 {
 	PyCFunctionObject *f;
+	const char *module;
 	if (cmpfunc == NULL || cmpfunc == Py_None)
 		return 1;
 	if (!PyCFunction_Check(cmpfunc))
@@ -1949,9 +1950,12 @@
 	f = (PyCFunctionObject *)cmpfunc;
 	if (f->m_self != NULL)
 		return 0;
-	if (!PyString_Check(f->m_module))
+	if (!PyUnicode_Check(f->m_module))
 		return 0;
-	if (strcmp(PyString_AS_STRING(f->m_module), "__builtin__") != 0)
+	module = PyUnicode_AsString(f->m_module);
+	if (module == NULL)
+		return 0;
+	if (strcmp(module, "__builtin__") != 0)
 		return 0;
 	if (strcmp(f->m_ml->ml_name, "cmp") != 0)
 		return 0;
diff --git a/Objects/longobject.c b/Objects/longobject.c
index b724edf..cdf8b99 100644
--- a/Objects/longobject.c
+++ b/Objects/longobject.c
@@ -3517,19 +3517,11 @@
 		return PyLong_FromLong(0L);
 	if (base == -909)
 		return PyNumber_Long(x);
-	else if (PyString_Check(x) || PyBytes_Check(x)) {
+	else if (PyBytes_Check(x)) {
 		/* Since PyLong_FromString doesn't have a length parameter,
 		 * check here for possible NULs in the string. */
-		char *string;
-		int size;
-		if (PyBytes_Check(x)) {
-			string = PyBytes_AS_STRING(x);
-			size = PyBytes_GET_SIZE(x);
-		}
-		else {
-			string = PyString_AS_STRING(x);
-			size = PyString_GET_SIZE(x);
-		}
+		char *string = PyBytes_AS_STRING(x);
+		int size = PyBytes_GET_SIZE(x);
 		if (strlen(string) != size) {
 			/* We only see this if there's a null byte in x,
 			   x is a str8 or a bytes, *and* a base is given. */
diff --git a/Objects/moduleobject.c b/Objects/moduleobject.c
index 19bb149..fbb9fba 100644
--- a/Objects/moduleobject.c
+++ b/Objects/moduleobject.c
@@ -66,17 +66,12 @@
 	d = ((PyModuleObject *)m)->md_dict;
 	if (d == NULL ||
 	    (nameobj = PyDict_GetItemString(d, "__name__")) == NULL ||
-	    !(PyString_Check(nameobj) || PyUnicode_Check(nameobj)))
+	    !PyUnicode_Check(nameobj))
 	{
 		PyErr_SetString(PyExc_SystemError, "nameless module");
 		return NULL;
 	}
-        if (PyUnicode_Check(nameobj)) {
-		nameobj = _PyUnicode_AsDefaultEncodedString(nameobj, NULL);
-		if (nameobj == NULL)
-			return NULL;
-	}
-	return PyString_AsString(nameobj);
+	return PyUnicode_AsString(nameobj);
 }
 
 const char *
