         }
       case .Idle:
         reloadImageView.removeFromSuperview()
-        displayLink.paused = true
+        if let link = displayLink {
+          link.paused = true
+        }
       }
     }
   }

    return image
  }()
  
  private lazy var displayLink: CADisplayLink = {
    let link = CADisplayLink(target: self, selector: "updateUI")
    link.frameInterval = 30 // twice every second
    return link

      switch state {
      case .Downloading(_):
        reloadImageView.removeFromSuperview()
        if let link = displayLink {
          link.paused = false
          link.addToRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)
        }
      case .Errored(_, _):
        if let link = displayLink {
          link.paused = true
        }
        progressLayer.hidden = true
        addSubview(reloadImageView)
        if let image = delegate?.imageForReloadState(self) {
