             return
         }
         
-        currentController.willMove(toParentViewController:nil)
-        currentController.beginAppearanceTransition(false, animated:true)
-        
-        controllers.append(controller)
-        addChildViewController(controller)
-        controller.willMove(toParentViewController:self)
-        controller.beginAppearanceTransition(true, animated:true)
+        controllers.append(controller)
+        addChildViewController(controller)
+        controller.beginAppearanceTransition(true, animated:true)
+        
+        currentController.beginAppearanceTransition(false, animated:true)
         
         viewParent.fromLeft(controller:controller, currentController:currentController)
         {
-            currentController.view.removeFromSuperview()
-            currentController.removeFromParentViewController()
-            currentController.didMove(toParentViewController:nil)
-            currentController.endAppearanceTransition()
-            
-            controller.didMove(toParentViewController:self)
-            controller.endAppearanceTransition()
+            controller.endAppearanceTransition()
+            
+            currentController.view.removeFromSuperview()
+            currentController.removeFromParentViewController()
+            currentController.endAppearanceTransition()
         }
     }
     

            return
        }
        
        currentController.willMove(toParentViewController:nil)
        currentController.beginAppearanceTransition(false, animated:true)
        
        previousController.willMove(toParentViewController:self)
        previousController.beginAppearanceTransition(true, animated:true)
        
        viewParent.dismiss(currentController:currentController)
        {
            currentController.view.removeFromSuperview()
            currentController.removeFromParentViewController()
            currentController.didMove(toParentViewController:nil)
            currentController.endAppearanceTransition()
            
            previousController.didMove(toParentViewController:self)
            previousController.endAppearanceTransition()
        }
    }
    

            currentController = nil
        }
        
        controllers.append(controller)
        addChildViewController(controller)
        controller.beginAppearanceTransition(true, animated:true)
        
        currentController?.beginAppearanceTransition(false, animated:true)
        
        viewParent.over(controller:controller, underBar:underBar)
        {
            controller.endAppearanceTransition()
            
            currentController?.view.removeFromSuperview()
            currentController?.removeFromParentViewController()
            currentController?.endAppearanceTransition()
        }
    }
    
