         }
     }
 
+    /**
+     Adds a dismiss button having the provided configuration, if needed.
+
+     - parameter config: The configuration to apply to the dismiss button.
+     
+     - note: This method does nothing if the view controller is not presented modally.
+     */
     public func addDismissButtonIfNeeded(config config: DismissButtonConfig = DismissButtonConfig()) {
         guard needsDismissButton else { return }
         addDismissButton(config: config)
     }
 
+    /**
+     Adds a dismiss button having the provided configuration.
+
+     - parameter config: The configuration to apply to the dismiss button.
+     
+     - note: The view controller must have a non-nil `navigationItem`.
+     */
     public func addDismissButton(config config: DismissButtonConfig = DismissButtonConfig()) {
         let button = UIBarButtonItem(config: config,
                                      target: self,

// MARK: - Presentation
public extension UIViewController {

    public func presentViewController(viewController: UIViewController, type: PresentationType, animated: Bool = true) {
        switch type {


// MARK: - Dismissal
public extension UIViewController {

    /**
     Dismisses the receiving view controller.
     */
    public func dismiss() {
        if isModallyPresented {
            dismissViewControllerAnimated(true, completion: nil)
