     }
 
     public var array: [XMLRPCNode]? {
-        if xml.rpcNode == XMLRPCNodeKind.Array {
-            return xml[.Data].all?.map { e in
-                return XMLRPCNode(xml: e[XMLRPCNodeKind.Value])
-            }
-        }
-        else if xml.rpcNode == XMLRPCNodeKind.Parameters {
-            return xml.all?.map { e in // Handle strings with string ommited
-                return XMLRPCNode(xml: e[XMLRPCNodeKind.Parameter][XMLRPCNodeKind.Value])
-            }
-        }
+        if let children = xml.rpcChildren {
+            return children.map { e in
+                if let value = e.first {
+                    return XMLRPCNode(xml: value)
+                }
+                return self.dynamicType.errorNode
+            }
+        }
+        
         return nil
     }
     

    }
}

protocol XMLRPCArrayType { }
extension Array: XMLRPCArrayType { }


    }
    
    public subscript(key: String) -> XMLRPCNode {
        guard xml.rpcNode == XMLRPCNodeKind.Structure else {
            return self.dynamicType.errorNode
        }
