     }
     
     //MARK: Status
-
-    public var currentRegion: String? {
+    
+    public var currentRegion: String {
         get {
-            return partialFormatter?.currentRegion
-        }
-    }
-//    public var isValidNumber: Bool {
-//        get {
-//            let rawNumber = self.text ?? String()
-//            do {
-//                let phoneNumber = try phoneNumberKit.parse(rawNumber: rawNumber, region: currentRegion)
-//                return phoneNumber.isValidNumber
-//            } catch {
-//                return false
-//            }
-//        }
-//    }
-    
-     //MARK: Lifecycle
+            return partialFormatter.currentRegion
+        }
+    }
+    public var isValidNumber: Bool {
+        get {
+            let rawNumber = self.text ?? String()
+            do {
+                let _ = try phoneNumberKit.parse(rawNumber, withRegion: currentRegion)
+                return true
+            } catch {
+                return false
+            }
+        }
+    }
+    
+    //MARK: Lifecycle
     
     /**
-    Init with frame
-    
-    - parameter frame: UITextfield F
-    
-    - returns: UITextfield
-    */
+     Init with frame
+     
+     - parameter frame: UITextfield F
+     
+     - returns: UITextfield
+     */
     override public init(frame:CGRect)
     {
+        self.partialFormatter = PartialFormatter(phoneNumberKit: phoneNumberKit, defaultRegion: defaultRegion, withPrefix: withPrefix)
         super.init(frame:frame)
         self.setup()
     }
     
-     /**
+    /**
      Init with coder
      
      - parameter aDecoder: decoder

                }
            }
        }

        return nil
    }
    

        guard let text = text else {
            return false
        }
        
        // allow delegate to intervene
        guard _delegate?.textField!(textField, shouldChangeCharactersIn: range, replacementString: string) ?? true else {
            return false
        }
        
        let textAsNSString = text as NSString
        let changedRange = textAsNSString.substring(with: range) as NSString
        let modifiedTextField = textAsNSString.replacingCharacters(in: range, with: string)
        let formattedNationalNumber = partialFormatter.formatPartial(modifiedTextField as String)
        var selectedTextRange: NSRange?
        
        let nonNumericRange = (changedRange.rangeOfCharacter(from: nonNumericSet as CharacterSet).location != NSNotFound)
        if (range.length == 1 && string.isEmpty && nonNumericRange)
        {
            selectedTextRange = selectionRangeForNumberReplacement(textField: textField, formattedText: modifiedTextField)
            textField.text = modifiedTextField
        }
        else {
            selectedTextRange = selectionRangeForNumberReplacement(textField: textField, formattedText: formattedNationalNumber)
            textField.text = formattedNationalNumber
        }
        sendActions(for: .editingChanged)
