     
     var taskNodeGenerator: UsbongTaskNodeGenerator?
     
+    lazy var speechSynthezier: AVSpeechSynthesizer = AVSpeechSynthesizer()
     var backgroundAudioPlayer: AVAudioPlayer?
+    var audioSpeechPlayer: AVAudioPlayer?
+    
+    var voiceOverOn: Bool {
+        get {
+            // Default to true if not yet set
+            let standardUserDefaults = NSUserDefaults.standardUserDefaults()
+            if standardUserDefaults.objectForKey("SpeechOn") == nil {
+                standardUserDefaults.setBool(true, forKey: "SpeechOn")
+            }
+            return standardUserDefaults.boolForKey("SpeechOn")
+        }
+        set {
+            NSUserDefaults.standardUserDefaults().setBool(newValue, forKey: "SpeechOn")
+        }
+    }
     
     override func viewDidLoad() {
         super.viewDidLoad()

            }
        }
    }
}

            }
            
            // Start voice-over if on
            if voiceOverOn {
                startVoiceOver()
            }
        }
    }
    
    private func transitionWithDirection(direction: TransitionDirection) {
        // Before transition
        stopVoiceOver()
        
        if direction == .Backward {
            // Previous
            if taskNodeGenerator?.previousTaskNode == nil {
                dismissViewControllerAnimated(true, completion: nil)
                return
            } else {
                taskNodeGenerator?.transitionToPreviousTaskNode()
            }
