         // task-node
         var taskNode: TaskNode? = nil
         // Find task-node element with attribute name value
-        if let taskNodeElement = try? processDefinition[UsbongXMLIdentifier.taskNode].withAttr(UsbongXMLIdentifier.name, name) {
+        if let taskNodeXMLIndexer = taskNodeXMLIndexerWithName(name) {
             let nameComponents = UsbongXMLName(name: name, language: currentLanguage)
             if let taskNodeType = TaskNodeType(rawValue: nameComponents.type) {
                 // Translate text if current language is not base language

                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] {
                            var nameComponents = name.componentsSeparatedByString("~")
                            if nameComponents.count > 1 {
                                let key = nameComponents.removeLast()

            }
        }
        return false
    }
    
    // MARK: Availability check
    public var nextTaskNodeIsAvailable: Bool {
        return nextTaskNodeName != nil
    }
    public var previousTaskNodeIsAvailable: Bool {
        return taskNodeNames.count > 1
    }
}
public class UsbongTaskNodeGeneratorXML: UsbongTaskNodeGenerator {
