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

            presenterViewController.presentViewController(alertController, animated: true, completion: nil)

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

     - parameter presenterViewController: The controller which is going to present the error alert.
     - retuns: Observable AlertManagerOption
     */
    public func error(errorType: ErrorType, preferredStyle: UIAlertControllerStyle = .Alert, presenterViewController: UIViewController? = nil) -> Observable<AlertManagerOption> {
        return Observable.create({ (observer) -> Disposable in
            let error = translateMoyaError(errorType)

