         }
     }
     
+    private func animateInMasterViewControllerOverlay() {
+        guard let master = masterViewController else {
+            return
+        }
+        master.view.transform = CGAffineTransformMakeTranslation(-containerFrames.master.size.width, 0)
+        UIView.animateWithDuration(animateOverlayDuration,
+            delay: 0,
+            options: .CurveEaseOut,
+            animations: { master.view.transform = CGAffineTransformIdentity },
+            completion: nil)
+    }
+    
+    private func animateOutMasterViewControllerOverlay() {
+        guard let master = masterViewController else {
+            return
+        }
+        UIView.animateWithDuration(animateOverlayDuration,
+            delay: 0,
+            options: .CurveEaseIn,
+            animations: { master.view.transform = CGAffineTransformMakeTranslation(-master.view.bounds.size.width, 0) },
+            completion: { _ in master.view.removeFromSuperview() })
+    }
+    
     func overlayHideButtonTapped() {
         guard masterPresentationStyle == .Overlay else {
             return

        }
    }
    
    @IBOutlet public var detailViewController: UIViewController? {
        willSet {
            removeChild(detailViewController)
        }

        }
    }
    
    private var overlayHideButton: UIButton? {
        willSet(newValue) {
            if newValue == nil {
                overlayHideButton?.removeFromSuperview()
            }
        }
    }
    
    private enum MasterPresentationStyle {
        case Hidden
