                 } else {
                     self.image = nil
                 }
-                if let url = source.url {
-                    if let loader = self.loader {
-                        loader.download(url, filter: self.filter, target: self)
-                        self.isDownloading = true
-                    }
-                }
                 self.backgroundColor = source.backgroundColor
                 self.tintColor = source.tintColor
+                self.startDownloading()
             } else {
                 self.image = nil
                 self.backgroundColor = UIColor.clear

        didSet { self.setNeedsDisplay() }
    }
    public var source: QImageSource? {
        willSet {
            if self.isDownloading == true {
                if let loader = self.loader {
                    loader.cancel(self)
                }
            }
            self.isDownloading = false
        }
        didSet {
            if let source = self.source {
                if let image = source.image {

            }
        }
    }
    public var filter: IQImageLoaderFilter? {
        willSet { self.stopDownloading() }
    }
    public var loader: QImageLoader? {
        willSet { self.stopDownloading() }
    }
    public private(set) var image: UIImage? {
        didSet {
            self.invalidateIntrinsicContentSize()
