         let foregroundTopConstraint = self.contentView.constraints.filter{ $0.identifier == "ForegroundViewTop"}.first
         let containerViewTopConstraint = self.contentView.constraints.filter{ $0.identifier == "ContainerViewTop"}.first
         
-        assert(foregroundTopConstraint != nil, "set identifier")
-        assert(containerViewTopConstraint != nil, "set identifier")
-        
-        containerViewTopConstraint!.constant = foregroundTopConstraint!.constant
+        guard let foregroundConstraint = foregroundTopConstraint else {
+            fatalError("set identifier")
+        }
+        guard let containerConstraint = containerViewTopConstraint else {
+            fatalError("set identifier")
+        }
+        
+        containerConstraint.constant = foregroundConstraint.constant
         containerView.alpha = 0;
         
         foregroundView.layer.anchorPoint = CGPoint.init(x: 0.5, y: 1)
-        foregroundTopConstraint!.constant += foregroundView.bounds.height / 2
+        foregroundConstraint.constant += foregroundView.bounds.height / 2
         foregroundView.layer.transform = foregroundView.transform3d()
         
         createAnimationView();

            delay += durations[index]
        }
        
        let firstItemView = animationView!.subviews.filter{$0.tag == 0}.first
        firstItemView!.layer.masksToBounds = true
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(durations[0] * Double(NSEC_PER_SEC))), dispatch_get_main_queue()) { () -> Void in
            firstItemView!.layer.cornerRadius = 0
        }
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(delay * Double(NSEC_PER_SEC))), dispatch_get_main_queue()) { () -> Void in
            self.animationView?.alpha = 0

        }
        
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(delay * Double(NSEC_PER_SEC))), dispatch_get_main_queue()) { () -> Void in
            if let animationView = self.animationView {
                animationView.alpha = 0
            }
            completion?()
        }
        
        if let animationView = self.animationView {
            let firstItemView = animationView.subviews.filter{$0.tag == 0}.first
            firstItemView?.layer.masksToBounds = false
            if let durationLast = durations.last {
                dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64((delay - durationLast * 1.5) * Double(NSEC_PER_SEC))), dispatch_get_main_queue()) { () -> Void in
                    firstItemView?.layer.cornerRadius = self.foregroundView.layer.cornerRadius
                }
            }
        }
    }
}
