diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index ba07e02..1602e48 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -1925,10 +1925,7 @@
 
     if (!(initial == NULL || PyList_Check(initial)
           || PyString_Check(initial) || PyTuple_Check(initial)
-          || PyTuple_Check(initial)
-          || ((c=='u') && PyUnicode_Check(initial))
-          || (array_Check(initial)
-              && c == ((arrayobject*)initial)->ob_descr->typecode))) {
+          || (c == 'u' && PyUnicode_Check(initial)))) {
         it = PyObject_GetIter(initial);
         if (it == NULL)
             return NULL;
@@ -1944,20 +1941,17 @@
             PyObject *a;
             Py_ssize_t len;
 
-            if (initial == NULL)
+            if (initial == NULL || !(PyList_Check(initial)
+                || PyTuple_Check(initial)))
                 len = 0;
-            else if (PyList_Check(initial))
-                len = PyList_GET_SIZE(initial);
-            else if (PyTuple_Check(initial) || array_Check(initial))
-                len = Py_SIZE(initial);
             else
-                len = 0;
+                len = PySequence_Size(initial);
 
             a = newarrayobject(type, len, descr);
             if (a == NULL)
                 return NULL;
 
-            if (len > 0 && !array_Check(initial)) {
+            if (len > 0) {
                 Py_ssize_t i;
                 for (i = 0; i < len; i++) {
                     PyObject *v =
@@ -2007,11 +2001,6 @@
                 }
 #endif
             }
-            else if (initial != NULL && array_Check(initial)) {
-                arrayobject *self = (arrayobject *)a;
-                arrayobject *other = (arrayobject *)initial;
-                memcpy(self->ob_item, other->ob_item, len * other->ob_descr->itemsize);
-            }
             if (it != NULL) {
                 if (array_iter_extend((arrayobject *)a, it) == -1) {
                     Py_DECREF(it);
