      - parameter limitColor: Default color is `UIColor.red`.
     */
     
-    public init(frame: CGRect, limit: Int, animate: Bool = true, ascending: Bool = true, counterColor: UIColor = .lightGray, limitColor: UIColor = .red) {
-        
+    public init(frame: CGRect,
+                limit: Int,
+                animate: Bool = true,
+                ascending: Bool = true,
+                counterColor: UIColor = .lightGray,
+                limitColor: UIColor = .red) {
         super.init(frame: frame)
-        
-        if !isValidMaxLength(max: limit) {
-            maxLength = TextFieldCounter.defaultLength
-        } else {
-            maxLength = limit
-        }
         
         self.animate = animate
         self.ascending = ascending
         self.counterColor = counterColor
         self.limitColor = limitColor
-        
+        self.maxLength = self.calculateMaxLenght(withLimit: limit)
+        
+        self.setupTextFieldStyle()
+        self.counterLabel = setupCounterLabel()
+        
+        super.delegate = self
+    }
+    
+    // MARK: - Private Methods
+    
+    private func calculateMaxLenght(withLimit limit: Int) -> Int {
+        if isValidMaxLength(max: limit) == false {
+            return TextFieldCounter.defaultLength
+        } else {
+            return limit
+        }
+    }
+    
+    private func isValidMaxLength(max: Int) -> Bool {
+        return max > 0
+    }
+    
+    // MARK: - Setup Methods
+    
+    private func setupTextFieldStyle() {
         self.backgroundColor = .white
         self.layer.borderWidth = 0.35
         self.layer.cornerRadius = 5.0
         self.layer.borderColor = UIColor.lightGray.cgColor
-        
-        super.delegate = self
-        counterLabel = setupCounterLabel()
-    }
-    
-    // MARK: Private Methods
-    
-    private func isValidMaxLength(max: Int) -> Bool {
-        return max > 0
     }
     
     private func setupCounterLabel() -> UILabel {
-        
-        let fontFrame : CGRect = CGRect(x: 0, y: 0, width: counterLabelWidth(), height: Int(frame.height))
-        let label : UILabel = UILabel(frame: fontFrame)
-        
-        if let currentFont : UIFont = font {
+        let fontFrame = CGRect(x: 0, y: 0, width: counterLabelWidth(), height: Int(frame.height))
+        let label = UILabel(frame: fontFrame)
+        
+        if let currentFont: UIFont = font {
             label.font = currentFont
             label.textColor = counterColor
             label.textAlignment = label.userInterfaceLayoutDirection == .rightToLeft ? .right : .left

    }
    
    // MARK: - Public Methods
    
    /**
     Initializes a new beautiful *TextFieldCounter*.
     

            animateCounterLabelColor(color: limitColor)
            fireHapticFeedback()
            if (animate) {
                counterLabel.shake(transform: CGAffineTransform(translationX: 5, y: 0), duration: 0.3)
            }
        default:
            break
