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

        goToController(viewController, data: data, direction: .Right)
    }

    private func goToController(viewController: UIViewController, data: OnboardingData?, direction: OnboardingDirection) {
        if let visibleViewController = visibleViewController {
            transitionFromViewController(visibleViewController, toViewController: viewController, direction: direction)
        }

        if var onboardingStep = viewController as? OnboardingStep {
            onboardingData = data
            onboardingStep.onboardingData = data
        }
    }


    var coverImage: UIImage? = nil
    var avatarImage: UIImage? = nil
}

private enum OnboardingDirection: CGFloat {
    case Left = -1
