      - parameter presenterViewController: The controller which is going to present the alert.
      - retuns: Observable AlertManagerOption
      */
-    public func alert(title title: String?, message: String? = nil, alertOptions: [AlertOption]?, hasCancel: Bool = false, preferredStyle: UIAlertControllerStyle = .Alert, presenterViewController: UIViewController) -> Observable<AlertManagerOption> {
+    public func alert(title title: String?, message: String? = nil, alertOptions: [AlertOption]?, hasCancel: Bool = false, preferredStyle: UIAlertControllerStyle = .Alert, presenterViewController: UIViewController?) -> Observable<AlertManagerOption> {
 
         return Observable.create({ (observer) -> Disposable in
             let alertController = UIAlertController(title: title, message: message, preferredStyle: preferredStyle)

        })
    }

    public func alert(title title: String?, message: String? = nil, options: [String]? = nil, hasCancel: Bool = false, preferredStyle: UIAlertControllerStyle = .Alert, presenterViewController: UIViewController) -> Observable<AlertManagerOption> {

        var alertOptions: [AlertOption]?
        if let options = options {

                alertController.addAction(cancelAction)
            }

            if let presenterViewController = presenterViewController{
                presenterViewController.presentViewController(alertController, animated: true, completion: nil)
            }else if let presenterViewController = Helper.topViewController(){
                presenterViewController.presentViewController(alertController, animated: true, completion: nil)
            }else{
                print("não existe controllers para apresentar o alert")
            }

            return AnonymousDisposable {
                alertController.dismissViewControllerAnimated(true, completion: nil)
