         }
     }
     
-    
-    private var _selectedBackgroundView: UIView?
+    /// The selectedBackgroundView will be placed above the background view and displayed on view selection.
     public var selectedBackgroundView:UIView? {
-        get {
-            return _selectedBackgroundView
-        }
-        set(selectedBackgroundView) {
-            _selectedBackgroundView?.removeFromSuperview()
-            _selectedBackgroundView = nil
-            _selectedBackgroundView = selectedBackgroundView!
-            _selectedBackgroundView!.hidden = true
-            
-            _selectedBackgroundView!.translatesAutoresizingMaskIntoConstraints = false
-            self.insertSubview(_selectedBackgroundView!, belowSubview: self.contentView)
-            
-            let views = ["sbV": _selectedBackgroundView!]
+        willSet {
+            self.selectedBackgroundView?.removeFromSuperview()
+            self.selectedBackgroundView = nil
+        }
+        didSet {
+            self.selectedBackgroundView!.hidden = true
+            
+            self.selectedBackgroundView!.translatesAutoresizingMaskIntoConstraints = false
+            self.insertSubview(self.selectedBackgroundView!, belowSubview: self.contentView)
+            
+            let views = ["sbV": self.selectedBackgroundView!]
             self.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[sbV]|",
                 options: NSLayoutFormatOptions.DirectionLeftToRight, metrics: nil, views: views))
             self.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[sbV]|",
                 options: NSLayoutFormatOptions.DirectionLeftToRight, metrics: nil, views: views))
-            
-        }
-    }
+        }
+    }
+    
+    // MARK: - Init
     
     required public init?(coder aDecoder: NSCoder) {
         super.init(coder: aDecoder)

import Foundation
import UIKit

/**
 The `SwiftGridReusableViewDelegate` is used for passing selection and highlighting events through to the data grid.
 */
public protocol SwiftGridReusableViewDelegate {
    func swiftGridReusableView(reusableView: SwiftGridReusableView, didSelectViewAtIndexPath indexPath: NSIndexPath)
    func swiftGridReusableView(reusableView: SwiftGridReusableView, didDeselectViewAtIndexPath indexPath: NSIndexPath)
    func swiftGridReusableView(reusableView: SwiftGridReusableView, didHighlightViewAtIndexPath indexPath: NSIndexPath)
    func swiftGridReusableView(reusableView: SwiftGridReusableView, didUnhighlightViewAtIndexPath indexPath: NSIndexPath)
}


    
    // MARK: - Cell Reuse
    
    /// Called before instance is returned from the reuse queue.
    /// Subclasses must call super.
    public override func prepareForReuse() {
        super.prepareForReuse()
        
