         self.segmentedControls.removeAll()
     }
 
+    private func changeCurrentIndex() {
+        guard let
+            value = self.value
+        else { return }
+
+        for control in self.segmentedControls {
+            for index in 0...control.numberOfSegments - 1 {
+                let title = control.titleForSegmentAtIndex(index)
+                guard value == title else { continue }
+
+                // yes KVO sucks, but we don't have another
+                // way to do this
+                removeObserverForSegmentedControl(control)
+                control.selectedSegmentIndex = index
+                addObserverForSegmentedControl(control)
+            } // end for index
+        } // end for
+    }
+
     // MARK: KVO
     public override func observeValueForKeyPath(
         keyPath: String?,

        }
    }

    public var value: String? {
        didSet {
            self.valueDidChange?(self.value)
        }
    }


        control.addObserver(
            self,
            forKeyPath: "selectedSegmentIndex",
            options: [.Old, .New],
            context: &self.kvoContext
        )
    }
