             print(NSLocalizedString("Prepare Image User Decided To Post Error: Something went wrong preparing the image", comment: ""))
             return false
         }
-
-    }
-
+    }
+
+    /**
+     Prepares image to be posted with all of it's data, including getting a valid location
+     */
+    func prepareImageToPost() {
+
+        // need image to be non-nil and post button to have been pressed already
+        guard let pickedImage = self.pickedImage where userPressedPostPhoto && !userPressedCancelButton else {
+            return
+        }
+
+        showProgressHudAndDisableUI()
+
+        failureGettingUserLocation = false
+
+        setLatLongAndLocationNameForImage { location in
+
+            self.dismissProgressHUDAndReEnableUI()
+
+            if let location = location {
+
+                let userObject = User(facebookID: CurrentUser.facebookUserId, name: CurrentUser.fullName)
+
+                //save name of image as current date and time
+                let dateFormatter = NSDateFormatter()
+                dateFormatter.dateFormat = "MM-dd-yyyy_HHmmss"
+                let todaysDate = NSDate()
+                let fileName = dateFormatter.stringFromDate(todaysDate) + ".png"
+
+                self.imageUserDecidedToPost = Image(caption: "", fileName: fileName, width: pickedImage.size.width, height: pickedImage.size.height, image: pickedImage, location: location, user: userObject)
+
+            } else {
+                self.failureGettingUserLocation = true
+            }
+
+            self.tryToPostPhoto()
+        }
+    }
 
     /**
      Method is called when the post button is pressed

    }

    /**
     Method is called from can't determine location alert if the user chooses to retry getting the location for the image
     */
    private func tryToDetermineLocationAgainAndSetLatLongAndLocationName() {

        showProgressHudAndDisableUI()

        failureGettingUserLocation = false

        setLatLongAndLocationNameForImage { location in

            self.dismissProgressHUDAndReEnableUI()

            if location == nil {
                self.failureGettingUserLocation = true
            }
            self.tryToPostPhoto()

        }

    }

    /**
     Method is called when the user decides to cancel taking a photo or choosing a photo from their photo library.

     - parameter picker: UIImagePickerController


        resetStateVariables()

        if !canPostImage(info) {
            self.destroyConfirmationView()

            self.showPhotoCouldntBeChosenAlert()
        }
    }

    /**
     Method determines if we have a valid image to post and either prepares to post or cancels operation

     - parameter info: imagePicker info dictionary

     - returns: true if valid image, false if not
     */
    func canPostImage(info: [String : AnyObject]) -> Bool {

        if let takenImage = info[UIImagePickerControllerOriginalImage] as? UIImage, resizedAndRotatedImage = UIImage.resizeAndRotateImage(takenImage) {

            self.confirmationView.photoImageView.image = takenImage
            self.pickedImage = resizedAndRotatedImage
            return true

        } else {
