         }
     }
     
+    /**
+     *  Each tab being represented by an item, this property points to the currently selected item. Assigning it to
+     *  a new value triggers a new selection. Selecting an unknown item will unselect any tabs, and leave the tabs control
+     *  with no tab selected.
+     */
     public var selectedItem: AnyObject? {
         get { return self.selectedButton?.tabButtonCell?.representedObject }
         set {


import AppKit

public class TabsControl: NSControl {
    private var ScrollViewObservationContext: UnsafeMutablePointer<Void> = nil // hm, wrong
    private var delegateInterceptor = MessageInterceptor()

    private var hideScrollButtons: Bool = true
    private var isHighlighted: Bool = false

    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 }
    }
    
    // MARK: - Public Properties
    
    /// The tabs style.
    public var tabsStyle: TabsControlTabsStyle {
        get { return self.tabButtonCell.tabStyle }
        set {
