                 case .Link:
                     var tasks = [LinkTaskNodeTask]()
                     // Fetch transition info from task elements
-                    let taskElements = taskNodeElement[UsbongXMLIdentifier.task].all
-                    for taskElement in taskElements {
-                        if let name = taskElement.element?.attributes[UsbongXMLIdentifier.name] {
+                    let taskXMLIndexers = taskNodeXMLIndexer[UsbongXMLIdentifier.task].all
+                    for taskXMLIndexer in taskXMLIndexers {
+                        if let name = taskXMLIndexer.element?.attributes[UsbongXMLIdentifier.name] {
                             var nameComponents = name.componentsSeparatedByString("~")
                             if nameComponents.count > 1 {
                                 let key = nameComponents.removeLast()

                }
                
                // Fetch transition info from transition elements
                let transitionElements = taskNodeElement[UsbongXMLIdentifier.transition].all
                for transitionElement in transitionElements {
                    if let attributes = transitionElement.element?.attributes {
                        // Get values of attributes name and to, add to taskNode object

        return currentText
    }
    
    // MARK: Convenience
    private func taskNodeXMLIndexerWithName(name: String) -> XMLIndexer? {
        return try? processDefinition[UsbongXMLIdentifier.taskNode].withAttr(UsbongXMLIdentifier.name, name)
    }
    
    private var nextTaskNodeName: String? {
        return transitionInfo[currentTargetTransitionName]
    }
    
    // MARK: Transitions
    public func transitionToNextTaskNode() -> Bool {
        // Get next task node name
        if let name = nextTaskNodeName {
            taskNodeNames.append(name)
            currentTaskNode = taskNodeWithName(name)
            return true
        }
        return false
