             borderView.leftAnchor.constraint(equalTo: leftAnchor, constant: left).isActive = true
             rightAnchor.constraint(equalTo: borderView.rightAnchor, constant: right).isActive = true
         case .frame:
-            let frame = CGRect(x: left,
-                               y: bounds.height - CGFloat(border.thickness),
-                               width: bounds.width - left - right,
-                               height: CGFloat(border.thickness))
-            borderView = BorderView(frame: frame, position: .bottom)
-            borderView.backgroundColor = border.color
-            addSubview(borderView)
-        }
-        
-        if border.roundedCorners {
-            borderView.layer.cornerRadius = CGFloat(border.thickness/2)
-            borderView.clipsToBounds = true
-        }
+            borderView = createBorderView(border: border,
+                                          firstOffset: left,
+                                          secondOffset: right,
+                                          position: .bottom)
+        }
+        
+        borderView.clipToBoundsBordersIfNeeded(border: border)
         
         return borderView
     }

    func add(bottom border: BorderViewProperties,
             withLeftOffset left: CGFloat = 0, rightOffset right: CGFloat = 0,
             layout: LayoutMode = .constraints) -> BorderView {
        let borderView: BorderView
        
        switch layout {
        case .constraints:

     */
    @discardableResult
    func add(left border: BorderViewProperties,
             withTopOffset top: CGFloat = 0,
             bottomOffset bottom: CGFloat = 0,
             layout: LayoutMode = .constraints) -> BorderView {
        var borderView: BorderView
        
        switch layout {
        case .constraints:
