     var keyboardAdjustmentAnimated: Bool? { get set }
 }
 
-public extension UIViewController {
-    var keyboardAdjustmentConstraint: NSLayoutConstraint? { get { return nil } }
-    var keyboardAdjustmentAnimated: Bool? { get { return nil } }
-    
-    func activateKeyboardAdjustment() {
+extension UIViewController {
+    /**
+     Activates keyboard adjustment for the calling view controller.
+
+     - seealso: `activateKeyboardAdjustment(showBlock:hideBlock:)`
+     - author: Daniel Loewenherz
+     - copyright: ©2016 Lionheart Software LLC
+     - date: February 18, 2016
+     */
+    public func activateKeyboardAdjustment() {
         activateKeyboardAdjustment(nil, hideBlock: nil)
     }
-    
-    func activateKeyboardAdjustment(showBlock: AnyObject?, hideBlock: AnyObject?) {
-        if let _ = keyboardAdjustmentConstraint {
+
+    /**
+     Enable keyboard adjustment for the current view controller, providing optional closures to call when the keyboard appears and when it disappears.
+     
+     - parameter showBlock: (optional) a closure that's called when the keyboard appears
+     - parameter hideBlock: (optional) a closure that's called when the keyboard disappears
+     - author: Daniel Loewenherz
+     - copyright: ©2016 Lionheart Software LLC
+     - date: February 18, 2016
+     */
+    public func activateKeyboardAdjustment(showBlock: AnyObject?, hideBlock: AnyObject?) {
+        if self is KeyboardAdjusting {
             let notificationCenter = NSNotificationCenter.defaultCenter()
             notificationCenter.addObserver(self, selector: "keyboardWillHide:", name: UIKeyboardWillHideNotification, object: hideBlock)
             notificationCenter.addObserver(self, selector: "keyboardDidShow:", name: UIKeyboardWillHideNotification, object: showBlock)

        }
    }
    
    func deactivateKeyboardAdjustment() {
        let notificationCenter = NSNotificationCenter.defaultCenter()
        notificationCenter.removeObserver(self, name: UIKeyboardWillHideNotification, object: nil)
        notificationCenter.removeObserver(self, name: UIKeyboardDidShowNotification, object: nil)
    }
    
    func keyboardWillHide(sender: NSNotification) {
        if let constraint = keyboardAdjustmentConstraint {
            if let block = sender.object as? (() -> Void) {
                block()
            }

            }
        }
    }
    /**
     A private method called after the keyboard is shown.
     
     - parameter sender: An `NSNotification` containing a `Dictionary` with information regarding the keyboard appearance.
     - author: Daniel Loewenherz
     - copyright: ©2016 Lionheart Software LLC
     - date: February 18, 2016
     */
    private func keyboardDidShow(sender: NSNotification) {
        guard let conformingSelf = self as? KeyboardAdjusting else {
            return
        }

        if let constraint = conformingSelf.keyboardAdjustmentConstraint {
            if let block = sender.object as? (() -> Void) {
                block()
            }
