     public init() {}
     
     open func startOn(current: UIViewController,
-                      with withSegue: UIStoryboardSegue,
-                      options: UIViewAnimationOptions) {
+                      with segue: UIStoryboardSegue,
+                      options animation: UIViewAnimationOptions) {
         
         guard current.childViewControllers.count > 0 else {
-            swapFrom(viewController: current,
-                     fromViewController: current.childViewControllers.last!,
-                     toViewController: withSegue.destination,
-                     options: options)
+            addChildViewController(current: current,
+                                   with: segue,
+                                   options: animation)
             return
         }
         
+        swapFrom(viewController: current,
+                 fromViewController: current.childViewControllers.last!,
+                 toViewController: segue.destination,
+                 options: animation)
+    }
+    
+    fileprivate func addChildViewController(current: UIViewController,
+                                            with segue: UIStoryboardSegue,
+                                            options: UIViewAnimationOptions) {
         let size = sizeFrom(viewController: current)
         
-        current.addChildViewController(withSegue.destination)
-        withSegue.destination.view.frame = CGRect(x: 0,
-                                                  y: 0,
-                                                  width: size.width,
-                                                  height: size.height)
+        current.addChildViewController(segue.destination)
+        segue.destination.view.frame = CGRect(x: 0,
+                                              y: 0,
+                                              width: size.width,
+                                              height: size.height)
         
-        current.view.addSubview(withSegue.destination.view)
-        withSegue.destination.didMove(toParentViewController: current)
+        current.view.addSubview(segue.destination.view)
+        segue.destination.didMove(toParentViewController: current)
     }
     
-    internal func swapFrom(viewController: UIViewController,
-                           fromViewController: UIViewController,
-                           toViewController: UIViewController,
-                           options: UIViewAnimationOptions) {
+    fileprivate func swapFrom(viewController: UIViewController,
+                              fromViewController: UIViewController,
+                              toViewController: UIViewController,
+                              options: UIViewAnimationOptions) {
         
         let size = sizeFrom(viewController: viewController)
         


protocol Presentable {
    func startOn(current: UIViewController,
                 with: UIStoryboardSegue,
                 options: UIViewAnimationOptions)
    
    func swapFrom(viewController: UIViewController,
                  fromViewController: UIViewController,
                  toViewController: UIViewController,
                  options: UIViewAnimationOptions)
    
    func sizeFrom(viewController: UIViewController) -> CGSize
}

open class Transaction : Presentable {

        }
    }
    
    fileprivate func sizeFrom(viewController: UIViewController) -> CGSize {
        return viewController.view.frame.size
    }
    
