     }
 }
 
-
+private func searchAll(root: XMLIndexer, attributeKey: String, attributeValue: String) -> [XMLIndexer]? {
+    var result = Array<XMLIndexer>()
+    for child in root.children {
+        if let element = child.element where element.attributes[attributeKey] == attributeValue {
+            return [child]
+        }
+        if let found = searchAll(child, attributeKey, attributeValue) {
+            result += found
+        }
+    }
+    return result.count > 0 ? result : nil
+}
+
+//MARK: Objects
 enum OS: String, Printable{
     case iOS = "iOS"
     case OSX = "OSX"

// Author: Marcin Krzyżanowski http://blog.krzyzanowskim.com
//

//
//  SWXMLHash.swift
//

                if let controllerType = os.controllerTypeForElementName(vc.element!.name) {
                    return controllerType
                }
        }
        return nil
    }

    func processStoryboard() {
        if let xml = self.xml, viewControllers = searchAll(xml, "sceneMemberID", "viewController") {
            for viewController in viewControllers {
                if let customClass = viewController.element?.attributes["customClass"] {
                    let segues = viewController["connections"]["segue"].all.filter({ return $0.element?.attributes["identifier"] != nil })
