         
     }
     
-    private func hideMenu() {
+    private func hideMenu(animated animated: Bool = true) {
         
         self.contentViewCenterConstraint.constant = 0
         
-        UIView.animateWithDuration(self.animationDuration) { 
+        if animated {
+            
+            UIView.animateWithDuration(self.menuAnimationDuration, delay: 0, options: self.menuAnimationOptions, animations: {
+                
+                self.contentContainerView.layer.transform = CATransform3DIdentity
+                self.view.layoutSubviews()
+                
+            }, completion: nil)
+            
+        } else {
             
             self.contentContainerView.layer.transform = CATransform3DIdentity
             self.view.layoutSubviews()

    
    /** The absolute translation to make on the content view */
    private func translateContentView(inXDimension x: CGFloat, animated: Bool = false) {
        
        print(x)
        
        // Do not translate if the translation is at the maximum
        guard abs(x) <= self.maxAbsoluteContentTranslation else {return}
        
        // Do not translate, if there is no menu
        
        let relativeTranslation = x / maxAbsoluteContentTranslation
        

        let contentContainerViewWidthAfterTranslation = self.contentContainerView.bounds.size.width * cos(Angle.degreesToRadians(degrees: relative3dAngleTranslation))
        var relative3dXTranslation: CGFloat =  self.contentContainerView.bounds.size.width - contentContainerViewWidthAfterTranslation
        relative3dXTranslation = x > 0 ? -relative3dXTranslation : relative3dXTranslation
        let relative3dScaleTranslation = 1 - (abs(relativeTranslation) * (1 - self.contentScaleFactor))
        
        var transform = CATransform3DIdentity;
        transform = CATransform3DScale(transform, 1, relative3dScaleTranslation, 1)
