         return results
     }
     
+    func controlsForModelKeyPath(keyPath: String) -> [ModelAwareControl] {
+        
+        var results = [ModelAwareControl]()
+        
+        var controls = self.modelAwareControlsInView(self.view)
+        debugPrintln("[SobrKit] Scanning \(controls.count) model aware controls for keyPath \(keyPath)...")
+        
+        for control in controls {
+            if let controlKeyPath = control.modelKeyPath {
+                if controlKeyPath == keyPath {
+                    results.append(control)
+                }
+            }
+        }
+        
+        return results
+    }
+    
     func validate() -> Bool {
         var valid = true
         

        var controls = self.modelAwareControlsInView(self.view)
        debugPrintln("[SobrKit] Updating \(controls.count) model aware controls")
        for control in controls {
            if let keyPath = control.modelKeyPath {
                if let value: AnyObject = self.valueForKeyPath(keyPath) {
                    debugPrintln("[SobrKit] Setting UI keyPath \(keyPath) to value: \(value)")
                    if let modelAwareTextField = control as? UITextField {
                        if let stringValue = value as? String {
                            modelAwareTextField.text = stringValue
                        }
                    }
                    if let modelAwareTextView = control as? UITextView {
                        if let stringValue = value as? String {
                            modelAwareTextView.text = stringValue
                        }
                    }
                    else if let modelAwareSwitch = control as? UISwitch {
                        if let boolValue = value as? Bool {
                            modelAwareSwitch.on = boolValue
                        }
                    }
                    else if let modelAwareSegmentedControl = control as? UISegmentedControl {
                        if let intValue = value as? Int {
                            modelAwareSegmentedControl.selectedSegmentIndex = intValue
                        }
                    }
                    else if let modelAwareLabel = control as? UILabel {
                        if let stringValue = value as? String {
                            modelAwareLabel.text = stringValue
                        }
                    }
                }
                
            }
        }
    }

        for control in controls {
            if let keyPath = control.modelKeyPath {
                if control.realtime {
                    debugPrintln("[SobrKit] remove obersver for keyPath \(keyPath)")
                    self.removeObserver(self, forKeyPath: keyPath)
                }
            }
        }
    }
}
