  *
  */
 public struct ConsoleViewController <A>: ConsoleViewControllerProtocol {
-    var text: String = ""
-    var parse: (String) -> A?
-    var onComplete: (A) -> () = { _ in }
+    let text: String = ""
+    let parse: (String) -> A?
+    let onComplete: (A) -> () = { _ in }
 }
 public extension ConsoleViewController {
     // This function execute the viewControllers

 *
 */
public struct ConsoleNavigationViewController: ConsoleViewControllerProtocol {
    var viewController: ConsoleViewControllerProtocol
}
public extension ConsoleNavigationViewController {
    mutating func pushViewController (_ vc: ConsoleViewControllerProtocol, animated: Bool) {
        if animated { sleep(2) }
        viewController = vc
        execute()
    }

    func execute () {
        viewController.execute()
    }
}

/*
 * AppDelegate
 *
 * A simple way to orchestrate multiple viewControllers execution. This will work either with
 * ConsoleViewController and ConsoleNavigationController
 *
 * Parameters:
 *
 * - initialViewController: ConsoleViewControllerProtocol?
 *                        The controller that will be executed when the app will start.

 * let ageVC = ConsoleViewController(text: "Enter your age:", parse: { return Int($0) }) { age in
 *     print("You're \(age) years old")
 * }
 * var navVC = ConsoleNavigationViewController(viewControllers: [ageVC])
 *
 * let app = AppDelegate()
 *
