             dispatch_group_notify(uploadVoiceGroup, dispatch_get_main_queue()) { [weak self] in
 
                 guard mediaInfo != nil else {
-
-                    YepHUD.hideActivityIndicator()
-                    self?.postButton.enabled = true
-
                     let message = uploadErrorMessage ?? NSLocalizedString("Upload failed!", comment: "")
-
-                    YepAlert.alertSorry(message: message, inViewController: self)
-                    
+                    self?.uploadState = .Failed(message: message)
+
                     return
                 }
 

            dispatch_group_notify(uploadImagesGroup, dispatch_get_main_queue()) { [weak self] in

                guard uploadImageInfos.count == mediaImagesCount else {

                    YepHUD.hideActivityIndicator()
                    self?.postButton.enabled = true

                    let message = uploadErrorMessage ?? NSLocalizedString("Upload failed!", comment: "")

                    YepAlert.alertSorry(message: message, inViewController: self)

                    return
                }

            createFeedWithKind(kind, message: message, attachments: mediaInfo, coordinate: coordinate, skill: self?.pickedSkill, allowComment: true, failureHandler: { [weak self] reason, errorMessage in
                defaultFailureHandler(reason, errorMessage: errorMessage)

                dispatch_async(dispatch_get_main_queue()) { [weak self] in
                    let message = errorMessage ?? NSLocalizedString("Create feed failed!", comment: "")
                    self?.uploadState = .Failed(message: message)
                }

            }, completion: { data in
                println(data)

                dispatch_async(dispatch_get_main_queue()) { [weak self] in

                    self?.uploadState = .Success

                    if let feed = DiscoveredFeed.fromFeedInfo(data, groupInfo: nil) {
                        self?.afterCreatedFeedAction?(feed: feed)
