     // MARK: - Internal Callbacks
     
     private func willScrollFromViewController(startingViewController: UIViewController?, destinationViewController: UIViewController) {
-        self.addChildIfNeeded(destinationViewController)
         if (startingViewController != nil) {
             self.delegate?.em_pageViewController?(self, willStartScrollingFrom: startingViewController!, destinationViewController: destinationViewController)
         }
+        self.addChildIfNeeded(destinationViewController)
     }
     
     private func didFinishScrollingToViewController(viewController: UIViewController) {

        // Scrolled forward
        if (selectedViewController == self.rightViewController) {
            
            self.delegate?.em_pageViewController?(self, didFinishScrollingFrom: self.selectedViewController, destinationViewController: self.rightViewController!, transitionSuccessful: true)
            
            self.didFinishScrollingCompletionHandler?(transitionSuccessful: true)
            self.didFinishScrollingCompletionHandler = nil
            
            self.removeChildIfNeeded(self.selectedViewController)
            
            if self.reloadAdjoiningViewControllersOnFinish {
                self.loadLeftViewControllerForSelectedViewController(selectedViewController)
                self.reloadAdjoiningViewControllersOnFinish = false
            } else {
                // Set new left controller as the old current controller
                self.leftViewController = self.selectedViewController
            }
            
            // Set the new current controller as the old right controller
            self.selectedViewController = self.rightViewController
            
            self.loadRightViewControllerForSelectedViewController(selectedViewController)
            
            
        // Scrolled reverse
        } else if (selectedViewController == self.leftViewController) {
            
            self.delegate?.em_pageViewController?(self, didFinishScrollingFrom: self.selectedViewController!, destinationViewController: self.leftViewController!, transitionSuccessful: true)
            
            self.didFinishScrollingCompletionHandler?(transitionSuccessful: true)
            self.didFinishScrollingCompletionHandler = nil
            
            self.removeChildIfNeeded(self.selectedViewController)
            
            if self.reloadAdjoiningViewControllersOnFinish {
                self.loadRightViewControllerForSelectedViewController(selectedViewController)
                self.reloadAdjoiningViewControllersOnFinish = false
            } else {
                // Set new right controller as the old current controller
                self.rightViewController = self.selectedViewController
            }
            
            // Set the new current controller as the old left controller
            self.selectedViewController = self.leftViewController
            
            self.loadLeftViewControllerForSelectedViewController(selectedViewController)
        
        // Scrolled but ended up where started
        } else if (selectedViewController == self.selectedViewController) {
            
            if (self.navigationDirection == .Forward) {
                self.delegate?.em_pageViewController?(self, didFinishScrollingFrom: self.selectedViewController!, destinationViewController: self.rightViewController!, transitionSuccessful: false)

            self.didFinishScrollingCompletionHandler?(transitionSuccessful: false)
            self.didFinishScrollingCompletionHandler = nil
            
            if self.reloadAdjoiningViewControllersOnFinish {
                if (self.navigationDirection == .Forward) {
                    self.loadRightViewControllerForSelectedViewController(selectedViewController)
                } else if (self.navigationDirection == .Reverse) {
                    self.loadLeftViewControllerForSelectedViewController(selectedViewController)
                }
            }
            
        }
        
        self.navigationDirection = nil
