         }
 
         if gestureState == UIGestureRecognizerState.Began || gestureState == UIGestureRecognizerState.Changed  {
-            panGesture.view?.center = CGPointMake(panGesture.view!.center.x, panGesture.view!.center.y + translatedPoint.y)
+
+            // modify size as view is panned down
+            var progress = ((panGesture.view!.center.y - initialCenter!.y) / rangeTotal)
+            
+            var invertedProgress = 1 - progress
+            var newWidth = finalSize!.width + (widthRange * invertedProgress)
+            
+            panGesture.view?.frame.size = CGSizeMake(newWidth, newWidth * aspectRatio)
+            
+            // ensure center x value moves along with size change
+            var finalX = initialCenter!.x + (centerXRange * progress)
+            
+            panGesture.view?.center = CGPointMake(finalX, panGesture.view!.center.y + translatedPoint.y)
             panGesture.setTranslation(CGPointMake(0, 0), inView: self.superview)
-            //TODO: change frame size constantly
 
         } else if gestureState == UIGestureRecognizerState.Ended {
             println("ENDED")

        var gestureState = panGesture.state
        
        var yChange = panGesture.view!.center.y + translatedPoint.y
        println("Y: \(yChange) :::: \(initialCenter!.y)")
        if yChange < initialCenter?.y {
            gestureState = UIGestureRecognizerState.Ended
            

    var initialSize: CGSize?
    var finalSize: CGSize?
    var firstX: CGFloat = 0, firstY: CGFloat = 0
    var aspectRatio: CGFloat = 0.5625
    
    var rangeTotal: CGFloat!
    var widthRange: CGFloat!
    var centerXRange: CGFloat!
    
    override init(frame: CGRect) {
        super.init(frame: frame)
