                         dispatch_async(dispatch_get_main_queue()) {
                             uploadImageInfos.append(uploadImageInfo)
 
-                            dispatch_group_leave(uploadMediaImagesGroup)
+                            dispatch_group_leave(uploadImagesGroup)
                         }
                     })
                 }
             })
 
-            dispatch_group_notify(uploadMediaImagesGroup, dispatch_get_main_queue()) {
+            dispatch_group_notify(uploadImagesGroup, dispatch_get_main_queue()) {
 
                 if !uploadImageInfos.isEmpty {
 

                }
            }

            dispatch_group_enter(uploadMediaImagesGroup)

            s3UploadFileOfKind(.Feed, inFilePath: feedVoice.fileURL.path, orFileData: nil, mimeType: MessageMediaType.Audio.mineType, failureHandler: { (reason, errorMessage) in

                defaultFailureHandler(reason, errorMessage: errorMessage)

                dispatch_async(dispatch_get_main_queue()) {
                    dispatch_group_leave(uploadMediaImagesGroup)
                }

            }, completion: { s3UploadParams in

            })
        }

        switch attachment {

        case .Default:

            let uploadImagesGroup = dispatch_group_create()

            var uploadImageInfos = [UploadImageInfo]()

