                 self.gestureDeltaX = 0
                 self.setNeedsLayout()
                 self.layoutIfNeeded()
-                self.panGesture.isEnabled = false
+                self.scrollPanGesture.isEnabled = false
 
                 self.prevImageView.alpha = 0.5
                 self.currImageView.alpha = 1
                 self.nextImageView.alpha = 0.5
             }
             .always {
-                self.panGesture.isEnabled = true
+                self.scrollPanGesture.isEnabled = true
             }
 
             if let delta = delta {

    override func layoutSubviews() {
        super.layoutSubviews()

        let imageWidth = frame.width - 2 * Size.insets - 2 * Size.lilBits
        let imageHeight = frame.height - 2 * Size.insets
        imagesContainer.frame.size.width = imageWidth * 3 + 2 * Size.insets
        imagesContainer.frame.size.height = frame.height
        imagesContainer.frame.origin.x = -imageWidth + Size.lilBits + gestureDeltaX
        imagesContainer.frame.origin.y = 0

        let views = [prevImageView, currImageView, nextImageView]
        views.eachPair { prevView, view in
            view.frame.origin.y = Size.insets
            view.frame.size = CGSize(
                width: imageWidth,
                height: imageHeight
            )

            if let prevView = prevView {
                view.frame.origin.x = prevView.frame.maxX + Size.insets
            }
            else {
                view.frame.origin.x = 0
            }
        }

        currLoadingLayer.position = currImageView.frame.center
    }


    }

    @objc
    func pinchGestureMovement(gesture: UIPinchGestureRecognizer) {
        if gesture.state == .began {
            gesture.scale = imageScale
        }
        else if gesture.state == .changed {
            imageScale = gesture.scale
            updateImageTransform(animated: false)
        }
        else if gesture.state == .ended {
            normalizeImageTransform()
        }
    }

    @objc
    func imagePanGestureMovement(gesture: UIPanGestureRecognizer) {
        var translation = gesture.translation(in: self)
        translation.x /= imageScale
        translation.y /= imageScale

        if gesture.state == .began {
            tempOffset = imageOffset
        }
        else if gesture.state == .changed {
            imageOffset = CGPoint(
                x: tempOffset.x + translation.x,
                y: tempOffset.y + translation.y)
            updateImageTransform(animated: false)
        }
        else if gesture.state == .ended {
            normalizeImageTransform()
        }
    }

    @objc
    func scrollPanGestureMovement(gesture: UIPanGestureRecognizer) {
        let translation = gesture.translation(in: self)

        if gesture.state == .began {
            imageScale = 1
            imageOffset = .zero
            updateImageTransform(animated: true)
        }
        else if gesture.state == .ended {
            let velocity = gesture.velocity(in: self)
            let delta: Delta?
            if translation.x < -20 && velocity.x < 0 && delegate?.imageURLsForScreen().next != nil {
