     }
 
     public var emptyDataViewVisible: Bool {
-        get {
-            if let emptyDataView = objc_getAssociatedObject(self, &AssociatedKeys.emptyDataView) as? EmptyDataView {
-                return emptyDataView.hidden
-            }
-            return false
-        }
+        if let emptyDataView = objc_getAssociatedObject(self, &AssociatedKeys.emptyDataView) as? EmptyDataView {
+            return !emptyDataView.hidden
+        }
+        return false
     }
 
     private var emptyDataView: EmptyDataView! {
-        get {
-            var emptyDataView = objc_getAssociatedObject(self, &AssociatedKeys.emptyDataView) as? EmptyDataView
-            if emptyDataView == nil {
-                emptyDataView = EmptyDataView(frame: frame)
-                emptyDataView!.autoresizingMask = [.FlexibleHeight, .FlexibleWidth]
-                emptyDataView!.hidden = true
-
-                emptyDataView!.tapGesture = UITapGestureRecognizer(target: self, action: "didTapEmptyDataView:")
-                emptyDataView!.tapGesture.delegate = self
-                emptyDataView!.addGestureRecognizer(emptyDataView!.tapGesture)
-                setEmptyDataView(emptyDataView!)
-            }
-            return emptyDataView!
-        }
+        var emptyDataView = objc_getAssociatedObject(self, &AssociatedKeys.emptyDataView) as? EmptyDataView
+        if emptyDataView == nil {
+            emptyDataView = EmptyDataView(frame: frame)
+            emptyDataView!.autoresizingMask = [.FlexibleHeight, .FlexibleWidth]
+            emptyDataView!.hidden = true
+
+            emptyDataView!.tapGesture = UITapGestureRecognizer(target: self, action: "didTapEmptyDataView:")
+            emptyDataView!.tapGesture.delegate = self
+            emptyDataView!.addGestureRecognizer(emptyDataView!.tapGesture)
+            setEmptyDataView(emptyDataView!)
+        }
+        return emptyDataView!
     }
 
     // MARK: - Setters

            if let newValue = newValue {
                objc_setAssociatedObject(self, &AssociatedKeys.emptyDataSetDataSource, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)

                swizzleMethod(selector: Selectors.reloadData)
                if isKindOfClass(UITableView.self) {
                    swizzleMethod(selector: Selectors.endUpdates)
                }
            } else {
                handlingInvalidEmptyDataSet()

    }

    // MARK: - Method swizzling
    private class func tb_swizzleMethod(originalSelector: Selector, swizzledSelector: Selector) {
        let originalMethod = class_getInstanceMethod(self, originalSelector)
        let swizzledMethod = class_getInstanceMethod(self, swizzledSelector)

        let didAddMethod = class_addMethod(self, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod))

        if didAddMethod {
            class_replaceMethod(self, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod))
        } else {
            method_exchangeImplementations(originalMethod, swizzledMethod)
        }
    }

    private class func tb_swizzleTableViewReloadData() {
        struct EmptyDataSetSwizzleToken {
            static var onceToken: dispatch_once_t = 0
        }
        dispatch_once(&EmptyDataSetSwizzleToken.onceToken) {
            let originalSelector = Selectors.reloadData
            let swizzledSelector = Selectors.tableViewSwizzledReloadData

            tb_swizzleMethod(originalSelector, swizzledSelector: swizzledSelector)
            print(__FUNCTION__)
        }
    }

    private class func tb_swizzleTableViewEndUpdates() {
        struct EmptyDataSetSwizzleToken {
            static var onceToken: dispatch_once_t = 0
        }
        dispatch_once(&EmptyDataSetSwizzleToken.onceToken) {
            let originalSelector = Selectors.endUpdates
            let swizzledSelector = Selectors.tableViewSwizzledEndUpdates

            tb_swizzleMethod(originalSelector, swizzledSelector: swizzledSelector)
            print(__FUNCTION__)
        }
    }

    private class func tb_swizzleCollectionViewReloadData() {
        struct EmptyDataSetSwizzleToken {
            static var onceToken: dispatch_once_t = 0
        }
        dispatch_once(&EmptyDataSetSwizzleToken.onceToken) {
            let originalSelector = Selectors.reloadData
            let swizzledSelector = Selectors.collectionViewSwizzledReloadData

            tb_swizzleMethod(originalSelector, swizzledSelector: swizzledSelector)
            print(__FUNCTION__)
        }
    }

