         menuBackground.setGifImage(backgroundGif, manager: gifManager)
     }
 
+    // MARK: Segues
+
+    /**
+     Notifies the `MainViewController` that a segue into `newScreen` is about to be
+     performed. 
+
+     - important:
+     The `MainViewController` must subsequently be called with `completeTransition`
+     instead of `transitionInto`.
+     
+     - returns:
+     The UIViewController for the new screen
+     */
+
     func prepareForTransitionInto(newScreen: Screen) -> UIViewController? {
         guard !isProcessingTransition else {
             return nil

            transitionOut(from: oldVC, downLevels: 1)
        }
    }

    func transitionOut(from oldVC: UIViewController, downLevels times: Int) {
        guard !isProcessingTransition else {


class MainViewController: UIViewController {

    // MARK: Properties

    @IBOutlet weak var contentView: UIView!
    @IBOutlet weak var menuBackground: UIImageView!

    private var viewControllerStack = [UIViewController]()
    private var isProcessingTransition = false

    // MARK: UIViewController

    override func viewDidLoad() {
        super.viewDidLoad()
