 
 }
 
+// MARK: Segue
+extension PageViewController {
+
+  override public func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
+    pageViewControllerDelegate?.pageViewController(self, prepareForSegue: segue, sender: sender)
+  }
+
+}
+
 // MARK: Rx Bindings
 // swiftlint:disable variable_name
 extension PageViewController {

      pageViewController.pageViewControllers = viewControllers
    }
  }
  
  override public func perform() { }
}


// MARK: PageViewControllerDelegate
public protocol PageViewControllerDelegate {

  // Called when the view controller changes to another page
  func pageViewController(pageViewController: PageViewController, didTransitionToIndex: Int)

  // Called when the view controller prepares for a segue, to allow parent view controller to inject
  // properties into child view controller
  func pageViewController(pageViewController: PageViewController,
                          prepareForSegue segue: UIStoryboardSegue, sender: AnyObject?)

}

public class PageViewController: UIPageViewController {

  // Dynamic so it can be observable
  private dynamic var _selectedIndex: Int = 0

  public var selectedIndex: Int {
