         // clear any prior runs of parse... expected that this won't be necessary, but you never know
         parentStack.removeAll()
 
-        //elements.push("root")
-        //parentStack.push(root)
-
         self.data = data
 
         return XMLIndexer(self)


    func parser(parser: NSXMLParser, foundCharacters string: String?) {
        if lazyLoad {
            println("foundCharacters \(elements.top()): \(elements.count) \(parentStack.count) ... \(parentStack.top().name)")
            if onElementMatch() {
                println("setting text")
                let current = parentStack.top()
                if current.text == nil {
                    current.text = ""

                return
            }

            let key = ops[parentStack.count].key
            if key != elementName { return }
            if parentStack.count > 0 {
                let currentNode = parentStack.top().addElement(elementName, withAttributes: attributeDict)
                parentStack.push(currentNode)
            }
            else {
                let currentNode = XMLElement(name: elementName, index: 0)
                for (keyAny,valueAny) in attributeDict {
                    let key = keyAny as! String
                    let value = valueAny as! String
                    currentNode.attributes[key] = value
                }
                parentStack.push(currentNode)
            }
        }
        else {
