     return label
     }()
 
-  public lazy var tapGestureRecognizer: UITapGestureRecognizer = { [unowned self] in
+  public private(set) lazy var tapGestureRecognizer: UITapGestureRecognizer = { [unowned self] in
     let gesture = UITapGestureRecognizer()
     gesture.addTarget(self, action: "handleTapGestureRecognizer")
 
     return gesture
     }()
 
-  public lazy var panGestureRecognizer: UIPanGestureRecognizer = { [unowned self] in
+  public private(set) lazy var panGestureRecognizer: UIPanGestureRecognizer = { [unowned self] in
     let gesture = UIPanGestureRecognizer()
     gesture.addTarget(self, action: "handlePanGestureRecognizer")
 
     return gesture
     }()
 
-  public var announcement: Announcement?
-  public var displayTimer = NSTimer()
-  public var panGestureActive = false
-  public var shouldSilent = false
-  public var completion: (() -> ())?
+  public private(set) var announcement: Announcement?
+  public private(set) var displayTimer = NSTimer()
+  public private(set) var panGestureActive = false
+  public private(set) var shouldSilent = false
+  public private(set) var completion: (() -> ())?
 
   // MARK: - Initializers
 

    return view
    }()

  public lazy var imageView: UIImageView = {
    let imageView = UIImageView()
    imageView.layer.cornerRadius = Dimensions.imageSize / 2
    imageView.clipsToBounds = true


  // MARK: - Gesture methods

  @objc private func handleTapGestureRecognizer() {
    guard let announcement = announcement else { return }
    announcement.action?()
    silent()
  }

  @objc private func handlePanGestureRecognizer() {
    let translation = panGestureRecognizer.translationInView(self)
    var duration: NSTimeInterval = 0

