     
     // MARK: - Subviews
     private let scrollView = PhotoScrollView()
-    private let cropView = UIView()
     private let topMask = UIView()
     private let bottomMask = UIView()
     
+    private var cropSize: CGSize = .zero
     private var originalSize: CGSize = .zero
+    private var originalPoint: CGPoint = .zero
     private var angle: CGFloat = 0
     private var manualZoomed: Bool = false
-    
-    private var maximumCanvasSize: CGSize = .zero
-    private var _centerY: CGFloat = 0   // TODO
-    private var originalPoint: CGPoint = .zero
     
     // MARK: - UIView
     

        setImageRotation(0)
        
        // scale the image
        maximumCanvasSize = CGSizeMake(
            self.frame.size.width,
            self.frame.size.width / cropAspectRatio
        )
        
        let scaleX = image.size.width / maximumCanvasSize.width
        let scaleY = image.size.height / maximumCanvasSize.height
        let scale = min(scaleX, scaleY)     // get minimum scale to fill canvas with image
        let bounds = CGRectMake(0, 0, image.size.width / scale, image.size.height / scale)
        
        originalSize = bounds.size
        _centerY = maximumCanvasSize.height / 2
        
        scrollView.bounds = bounds
        scrollView.center = self.center
        scrollView.contentSize = CGSizeMake(self.scrollView.bounds.size.width, self.scrollView.bounds.size.height)
        
        scrollView.imageView.frame = self.scrollView.bounds
        
        cropView.bounds = self.scrollView.frame
        cropView.center = self.scrollView.center
        
        originalPoint = convertPoint(self.scrollView.center, toView: self)
        
        updateMasks()
        

    
    private func updateMasks(animated animated: Bool = false) {
        
        let maskSize = CGSize(
            width: bounds.size.width,
            height: (bounds.size.height - cropSize.height) / 2
        )
        
        let animation = {
            self.topMask.frame = CGRect(
                origin: CGPoint(x: 0, y: self.bounds.top),
                size: maskSize
            )
            self.bottomMask.frame = CGRect(
                origin: CGPoint(x: 0, y: self.bounds.bottom - maskSize.height),
                size: maskSize
            )
        }
        
