             return _parkedText
         }
         set {
-            if !text!.isEmpty {
-                let typed = text![text!.startIndex..<advance(text!.endIndex, -self.parkedText.characters.count)]
+            guard var text = text else {
+                return
+            }
+            if !text.isEmpty {
+                let typed = text[text.startIndex..<text.endIndex.advancedBy(-self.parkedText.characters.count)]
                 text = typed + newValue
 
-                prevText =  text!
+                prevText =  text
                 _parkedText = newValue
                 
                 textChanged(self)

        let utf16view = text.utf16
        let from = String.UTF16View.Index(range.startIndex, within: utf16view)
        let to = String.UTF16View.Index(range.endIndex, within: utf16view)
        return NSMakeRange(from - utf16view.startIndex, to - from)
    }

    func goToBeginningOfParkedText() {

    /// Variable part of the text. Defaults to "".
    @IBInspectable public var typedText: String {
        get {
            guard let text = text else {
                return ""
            }
            if text.hasSuffix(parkedText) {
                return text[text.startIndex..<text.endIndex.advancedBy(-parkedText.characters.count)]
            } else {
                return text
            }
        }
        set {
