                 self.autoSetDimension(ALDimension.Height, toSize: CGFloat(self.height))
             }
         }
+        
+        // set up view components
+        if self.backgroundViewContainer == nil {
+            self.setUpComponents()
+        }
+    }
+    
+    private func setUpComponents() {
+        
+        // add background view container
+        let backgroundViewContainer = UIView()
+        self.addSubview(backgroundViewContainer)
+        backgroundViewContainer.autoPinEdgesToSuperviewEdges()
+        self.backgroundViewContainer = backgroundViewContainer
+        self.updateBackgroundStyle(self.backgroundStyle)
+        
     }
     
     private func bringBarToFront() {

        }
    }
    
    // MARK: Public
    
    func show() {
        self.setUpIfRequired()
        
        self.backgroundColor = UIColor.redColor()
    }
    
    func hide() {


class CocoaBar: UIView {
    
    enum BackgroundStyle {
        case SolidColor
        case BlurExtraLight
        case BlurLight
        case BlurDark
        case Custom
    }
    
    // MARK: Defaults
    let cocoaBarDefaultHeight: Float = 88.0
    
    // MARK: Variables
    private var height: Float
    private var rootWindow: UIWindow?
    private var backgroundViewContainer: UIView?
    
    private var _backgroundView: UIView?
    
    // MARK: Properties
    
    var backgroundStyle: BackgroundStyle = .BlurExtraLight {
        willSet {
            if newValue != self.backgroundStyle {
                self.updateBackgroundStyle(newValue)
            }
        }
    }
    
    var backgroundView: UIView? {
        get {
            return _backgroundView
        }
    }
    
    // MARK: Init
    
