   
   //  MARK: - Obsever
   
-  override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
+  override public func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
     guard !blockobserver else { return }
     
     switch keyPath! {

    maskDelegate?.maskFieldDidBeginEditing(self)
  }
  
  func textFieldDidEndEditing(textField: UITextField) {
    isBecomeFirstResponder = false
    updateMaskTexWithString(maskText)
    
    maskDelegate?.maskFieldDidEndEditing(self)
  }

  func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    guard let maskObject = maskObject where !maskObject.isEmpty else { return true }
    
    let rangeInt = range.toRange()!


extension AKMaskField: UITextFieldDelegate {
  
  public func textFieldDidBeginEditing(textField: UITextField) {
    guard let maskObject = maskObject where !maskObject.isEmpty else { return }
    
    // Initial carret position
