                     self.view.alpha = 0.0
                 },
                 completion: {(result) -> Void in
-                    self.dismissViewController()
+                    self.dissmissViewControllerAnimated(false)
                 }
             )
             
-            return
-        }
-
-        var offsetX = fabs(scrollView.contentOffset.x - self.scrollPreviewPoint.x)
-        var offsetY = fabs(scrollView.contentOffset.y - self.scrollPreviewPoint.y)
-        if offsetY > offsetX {
-            var contentOffset = scrollView.contentOffset
-            contentOffset.x = self.scrollPreviewPoint.x
-            scrollView.contentOffset = contentOffset
-            
-            let alpha:CGFloat = 1.0 - (scrollView.contentOffset.y * 2.0 / scrollView.frame.size.height / 2.0)
-            self.backgroundView.alpha = alpha
-        } else {
-            var contentOffset = scrollView.contentOffset
-            contentOffset.y = self.scrollPreviewPoint.y
-            scrollView.contentOffset = contentOffset
-        }
-
-        // paging
-        if visiblePageControl {
-            if fmod(scrollView.contentOffset.x, scrollView.frame.size.width) == 0.0 {
-                self.pageControl.currentPage = Int(scrollView.contentOffset.x / scrollView.frame.size.width)
-            }
-        }
-        
+        }
     }
 
     // MARK: - Button Actions

    optional func photoSliderControllerWillDismiss(viewController: PhotoSlider.ViewController)
    optional func photoSliderControllerDidDismiss(viewController: PhotoSlider.ViewController)
}


public class ViewController:UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout {


    public func scrollViewDidScroll(scrollView: UIScrollView) {

        let offsetX = scrollView.contentOffset.x - self.scrollPreviewPoint.x
        let offsetY = scrollView.contentOffset.y - self.scrollPreviewPoint.y
        
        if offsetY > offsetX {
            let alpha = 1.0 - (scrollView.contentOffset.y / (scrollView.frame.size.height / 2.0))
            self.backgroundView.alpha = alpha
            
            var contentOffset = scrollView.contentOffset
            contentOffset.x = self.scrollPreviewPoint.x
            scrollView.contentOffset = contentOffset
        } else {
            var contentOffset = scrollView.contentOffset
            contentOffset.y = self.scrollPreviewPoint.y
            scrollView.contentOffset = contentOffset
        }
        
        // paging
        if self.visiblePageControl {
            if fmod(scrollView.contentOffset.x, scrollView.frame.size.width) == 0.0 {
                self.pageControl.currentPage = Int(scrollView.contentOffset.x / scrollView.frame.size.width)
            }
        }
  
    }
    
    public func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {

        let screenHeight = UIScreen.mainScreen().bounds.size.height
        let screenWidth = UIScreen.mainScreen().bounds.size.width
        let velocity = scrollView.panGestureRecognizer.velocityInView(scrollView)

        if velocity.y < -500 {
            self.collectionView.frame = scrollView.frame;

            if self.delegate!.respondsToSelector("photoSliderControllerWillDismiss:") {
                self.delegate!.photoSliderControllerWillDismiss!(self)
            }
            
            UIView.animateWithDuration(
                0.4,
                delay: 0,
                options: UIViewAnimationOptions.CurveEaseOut,
                animations: { () -> Void in
