     /// - parameter placeHolderImage: an optional NSImage to temporarily display while the image is downloading
     /// - parameter errorImage: an optional NSImage that displays if the download fails.
     /// - parameter usesSpinningWheel: A Bool that determines whether or not a spinning wheel indicator displays during download
-    open func downloadImageFromURL(_ url: String, placeHolderImage:NSImage? = nil, errorImage:NSImage? = nil, usesSpinningWheel: Bool = false) {
+    open func downloadImageFromURL(_ url: String, placeHolderImage:NSImage? = nil, errorImage:NSImage? = nil, usesSpinningWheel: Bool = false, completion: ((Data) -> Void)?) {
         cancelDownload()
         
+        completionHandler = completion
         isLoadingImage = true
         didFailLoadingImage = false
         userDidCancel = false

        guard error == nil else {
            Swift.print(error!.localizedDescription)
            failureReset()
            return;
        }
            
            
        didFailLoadingImage = false
        userDidCancel = false
        guard let data = imageDownloadData else {
            Swift.print("Image data not downloaded correctly.")
            failureReset()
            return;
        }
        guard let img: NSImage = NSImage(data: data) else {
            Swift.print("Error forming image from data.")
            failureReset()
            return;
        }
        image = img
        isLoadingImage = false
        

    var userDidCancel: Bool = false
    var didFailLoadingImage: Bool = false
    
    var completionHandler: ((Data?, Error?) -> Void)?
    
    fileprivate var toolTipWhileLoading: String?
    fileprivate var toolTipWhenFinished: String?
    fileprivate var toolTipWhenFinishedWithError: String?
