     public init(imageURLs:Array<URL>) {
         super.init(nibName: nil, bundle: nil)
         self.imageURLs = imageURLs
-        self.usingImageType = .URL
-    }
-
-    public init(images:Array<UIImage>) {
+        usingImageType = .URL
+    }
+
+    public init(images: [UIImage]) {
         super.init(nibName: nil, bundle: nil)
         self.images = images
-        self.usingImageType = .Image
-    }
-
-    public init(photos:Array<PhotoSlider.Photo>) {
+        usingImageType = .Image
+    }
+
+    public init(photos: [PhotoSlider.Photo]) {
         super.init(nibName: nil, bundle: nil)
         self.photos = photos
-        self.usingImageType = .Photo
+        usingImageType = .Photo
     }
     
     required public init(coder aDecoder: NSCoder) {

    // Constraints
    
    func layoutScrollView() {
        self.scrollView.translatesAutoresizingMaskIntoConstraints = false
        
        let views = ["scrollView": self.scrollView]
        let constraintVertical   = NSLayoutConstraint.constraints(withVisualFormat: "V:|[scrollView]|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: views)
        let constraintHorizontal = NSLayoutConstraint.constraints(withVisualFormat: "H:|[scrollView]|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: views)
        self.view.addConstraints(constraintVertical)
        self.view.addConstraints(constraintHorizontal)
    }
    
    func layoutCloseButton() {
        self.closeButton!.translatesAutoresizingMaskIntoConstraints = false
        
        let views = ["closeButton": self.closeButton!]
        let constraintVertical   = NSLayoutConstraint.constraints(withVisualFormat: "V:|[closeButton(52)]", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: views)
        let constraintHorizontal = NSLayoutConstraint.constraints(withVisualFormat: "H:[closeButton(52)]|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: views)
        self.view.addConstraints(constraintVertical)
        self.view.addConstraints(constraintHorizontal)
    }
    
    func layoutPageControl() {
        self.pageControl.translatesAutoresizingMaskIntoConstraints = false
        
        let views = ["pageControl": self.pageControl]
        let constraintVertical = NSLayoutConstraint.constraints(withVisualFormat: "V:[pageControl]|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: views)
        let constraintCenterX  = NSLayoutConstraint.constraints(withVisualFormat: "H:|[pageControl]|", options: NSLayoutFormatOptions.alignAllCenterX, metrics: nil, views: views)
        self.view.addConstraints(constraintVertical)
        self.view.addConstraints(constraintCenterX)
    }
    
    func layoutCaptionLabel() {
        self.captionLabel.translatesAutoresizingMaskIntoConstraints = false
        let views = ["captionLabel": self.captionLabel]
        let constraintVertical   = NSLayoutConstraint.constraints(
            withVisualFormat: "V:[captionLabel]-32-|",
            options: NSLayoutFormatOptions(rawValue: 0),

extension ViewController: ZoomingAnimationControllerTransitioning {
    
    public func transitionSourceImageView() -> UIImageView {
        let zoomingImageView = imageViews[currentPage]
        zoomingImageView.imageView.clipsToBounds = true
        zoomingImageView.imageView.contentMode = UIViewContentMode.scaleAspectFill
        return zoomingImageView.imageView
