 protocol OnboardingStep {
     var onboardingViewController: OnboardingViewController? { get set }
     var onboardingData: OnboardingData? { get set }
-    optional func onboardingWillProceed()
+    optional func onboardingWillProceed((OnboardingData?) -> Void)
+    optional func onboardingStepBegin()
 }
 
 

        }

        Tracker.sharedTracker.screenAppeared(nextViewController.title ?? nextViewController.readableClassName())

        if visibleViewController == onboardingViewControllers.last {
            nextButton.setTitle("Done", forState: .Normal)
        }
        else {
            nextButton.setTitle("Next", forState: .Normal)
        }

        visibleViewController.willMoveToParentViewController(nil)
        addChildViewController(nextViewController)


}

// MARK: Screen transitions
extension OnboardingViewController {

