             transitionOut(from: oldVC, downLevels: 1)
         }
     }
+
+    /**
+     Transition out from the specified view controller by the specified number.
+     
+     - parameters:
+        - from/oldVC: The current view controller which you wish to transition out from
+        - downLevels/times: The number of levels to go back, e.g. for a stack of
+          `[A, B]`, transitioning out 1 time from B means the screen is now at A
+     */
 
     func transitionOut(from oldVC: UIViewController, downLevels times: Int) {
         guard !isProcessingTransition else {

            isProcessingTransition = false
        }
    }

    func transitionInto(newScreen: Screen, from oldVC: UIViewController) {
        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()
