                     let operation = UploadAttachmentOperation(uploadAttachment: uploadAttachment) { result in
                         switch result {
                         case .Failed(let errorMessage):
-                            if let errorMessage = errorMessage {
-                                uploadErrorMessage = errorMessage
-                            }
+                            print("UploadAttachmentOperation errorMessage: \(errorMessage)")
                         case .Success(let uploadedAttachment):
                             uploadedAttachments.append(uploadedAttachment)
                         }

        var message = shareType.body
        var kind: FeedKind = .Text
        var attachments: [JSONDictionary]?
        var openGraph: OpenGraph?

        let tryCreateFeed: () -> Void = { [weak self] in

            let doCreateFeed: () -> Void = { [weak self] in

                if let openGraph = openGraph where openGraph.isValid {

                    kind = .URL

                    let URLInfo = [
                        "url": openGraph.URL.absoluteString,
                        "site_name": (openGraph.siteName ?? "").yepshare_truncatedForFeed,
                        "title": (openGraph.title ?? "").yepshare_truncatedForFeed,
                        "description": (openGraph.description ?? "").yepshare_truncatedForFeed,
                        "image_url": openGraph.previewImageURLString ?? "",
                    ]

                    attachments = [URLInfo]
                }

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

                    dispatch_async(dispatch_get_main_queue()) { [weak self] in
                        completion(finish: false)
                    }

                }, completion: { data in
                    print("createFeedWithKind: \(data)")

                    dispatch_async(dispatch_get_main_queue()) { [weak self] in
                        completion(finish: true)
                    }
                })
            }

            doCreateFeed()
        }

        switch shareType {

        case .PlainText(let body):

            tryCreateFeed()

//            createFeedWithKind(.Text, message: body, attachments: nil, coordinate: nil, skill: skill, allowComment: true, failureHandler: { reason, errorMessage in
//                defaultFailureHandler(reason: reason, errorMessage: errorMessage)

                    kind = .Image
                }

                doCreateFeed()
            }
            
            if let lastUploadAttachmentOperation = uploadAttachmentOperations.last {
