     private var hideScrollButtons: Bool = true
     private var isHighlighted: Bool = false
 
-    // MARK: - Public Properties
-    
+    private var tabButtonCell: TabButtonCell {
+        get { return self.cell as! TabButtonCell }
+    }
+
+    // MARK: - Data Source & Delegate
+    
+    /// The dataSource of the tabs control, providing all the necessary information for the class to build the tabs.
     @IBOutlet public weak var dataSource: TabsControlDataSource?
+    /// The delegate of the tabs control, providing additional possibilities for customization and precise behavior.
     @IBOutlet public weak var delegate: TabsControlDelegate? {
         get { return self.delegateInterceptor.receiver as? TabsControlDelegate }
         set { self.delegateInterceptor.receiver = newValue as? NSObject }
     }
-
-    public var automaticSideBorderMasks: Bool = true {
-        didSet { self.propagateBorderMask() }
-    }
-    public var preferFullWidthTabs: Bool = false {
-        didSet {
-            self.layoutTabButtons(self.tabButtons(), animated: true)
-            self.updateAuxiliaryButtons()
-        }
-    }
-    
-    public var minTabWidth: CGFloat =  50.0 {
-        didSet {
-            self.layoutTabButtons(self.tabButtons(), animated: true)
-            self.updateAuxiliaryButtons()
-        }
-    }
-    public var maxTabWidth: CGFloat = 150.0 {
-        didSet {
-            self.layoutTabButtons(self.tabButtons(), animated: true)
-            self.updateAuxiliaryButtons()
-        }
-    }
-
-//    public override var highlighted: Bool {
-//        get { return true }
-//    }
-    
-    // MARK: - Public Computed Properties
-    
-    var tabButtonCell: TabButtonCell {
-        get { return self.cell as! TabButtonCell }
-    }
-
+    
+    // MARK: - Public Properties
+    
+    /// The tabs style.
     public var tabsStyle: TabsControlTabsStyle {
         get { return self.tabButtonCell.tabStyle }
         set {

        }
    }
    
    public var selectedItem: AnyObject? {
        get { return self.selectedButton?.tabButtonCell?.representedObject }
        set {

            self.tabButtons().forEach { $0.tabButtonCell?.tabStyle = newValue }
        }
    }
    /// The border mask controls for which sides of every tab one should draw a border.
    public var bordersMask: TabsControlBorderMask {
        get { return self.tabButtonCell.borderMask }
        set {
