         basicAnimation.fromValue = transparentLayer!.opacity
         
         // animate to 0 if closed; animate to 0.5 if opening
-        if self.slideState == .Opened {
-            basicAnimation.toValue = 0.5
-            transparentLayer!.opacity = 0.5
-        } else if self.slideState == .Closed {
-            basicAnimation.toValue = 0
-            transparentLayer!.opacity = 0
-        } else { // for dragging animation I'll set the duration to 0, because setting opacity directly (w/o animation) is too slow. very crazy
-            basicAnimation.duration = 0
-            basicAnimation.toValue = Float(0.5-(progress-0.9)*(0.5)/(0.1))
-            transparentLayer!.opacity = Float(0.5-(progress-0.9)*(0.5)/(0.1))
-        }
+        basicAnimation.duration = 0
+        basicAnimation.toValue = Float(0.5-(progress-0.9)*(0.5)/(0.1))
+        transparentLayer!.opacity = Float(0.5-(progress-0.9)*(0.5)/(0.1))
+        
         
         // exec the animation function
         transparentLayer!.addAnimation(basicAnimation, forKey: self.transparentLayerAnimationKey)
         
         // Animate all the 3D stuff of the currently active VC
-        if state == .Opened || state == .Closed { // Animate the stuff directly
-            
-            UIView.animateWithDuration(0.4, animations: { () -> Void in
-                if self.slideState == .Opened {
-                    self.activeChild?.view.layer.transform = CATransform3DMakeScale(self.zoomFactor,self.zoomFactor,self.zoomFactor)
-                } else if self.slideState == .Closed {
-                    self.activeChild?.view.layer.transform = CATransform3DIdentity
-                }
+        if self.slideState == .Opened {
+            UIView.animateWithDuration(0.1, animations: { 
+                self.activeChild?.view.layer.transform = CATransform3DScale(CATransform3DIdentity, self.zoomFactor, self.zoomFactor, self.zoomFactor)
             })
-            
-        } else { // "smooth" animate
-            
+        } else {
             var transform: CATransform3D = CATransform3DIdentity;
             transform.m34 = 1.0 / 400.0; // This is something like the CSS command "perspective:"
             transform = CATransform3DRotate(transform, 1-progress, 0, 1, 0)
             transform = CATransform3DScale(transform, progress, progress, progress)
             self.activeChild?.view.layer.transform = transform;
-            
         }
     }
     

        
    }
    
    private func moveSlideMenu(y: CGFloat, animated: Bool) {
        
        func mapValue(x: CGFloat, in_min: CGFloat, in_max: CGFloat, out_min: CGFloat, out_max: CGFloat) -> CGFloat
        {

            self.view.addSubview(vc.view)
            self.view.bringSubviewToFront(self.slideMenuViewController.view)
        } else {
            self.flip(vc)
        }
        
        self.activeChild = vc
        self.closeSlideMenu()
    }
    
    public func displayViewController(index index: Int) {
