 
 class LightboxTransition: NSObject {
 
-  private struct Timing {
+  struct Timing {
     static let Transition: NSTimeInterval = 1
   }
 
-  private var presentingViewController = false
+  var presentingViewController = false
 
-  private func dismissLightbox(controller: UIViewController) {
+  func dismissLightbox(controller: UIViewController) {
     controller.view.transform = CGAffineTransformMakeScale(0, 0)
     controller.view.alpha = 0
   }
 
-  private func showLightbox(controller: UIViewController) {
+  func showLightbox(controller: UIViewController) {
     controller.view.transform = CGAffineTransformIdentity
     controller.view.alpha = 1
   }


extension LightboxTransition : UIViewControllerAnimatedTransitioning {

  private func transitionDuration(transitionContext: UIViewControllerContextTransitioning) -> NSTimeInterval {
    return Timing.Transition
  }

  private func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
    let containerView = transitionContext.containerView()
    let duration = transitionDuration(transitionContext)



// MARK: Transition delegate

extension LightboxTransition : UIViewControllerTransitioningDelegate {

  func animationControllerForPresentedController(presented: UIViewController,
    presentingController presenting: UIViewController,
    sourceController source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
      presentingViewController = true
      return self
  }

  func animationControllerForDismissedController(dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
    presentingViewController = false
    return self
  }
