     
     override init(frame: CGRect) {
         super.init(frame: frame)
-        
+        self.commonInit()
+    }
+
+    required init?(coder aDecoder: NSCoder) {
+        super.init(coder: aDecoder)
+        self.commonInit()
+    }
+    
+    func commonInit() {
         var dropShadowFrame = self.dropShadowView.frame
         dropShadowFrame.origin.x = 0 - dropShadowFrame.size.width
         dropShadowFrame.origin.y = 0
         dropShadowFrame.size.height = self.bounds.size.height
         self.dropShadowView.frame = dropShadowFrame
         self.addSubview(self.dropShadowView)
-        
         self.clipsToBounds = false
         self.backgroundColor = UIColor.clearColor()
     }
-
-    required init?(coder aDecoder: NSCoder) {
-        fatalError("init(coder:) has not been implemented")
-    }
 }

        let context = UIGraphicsGetCurrentContext()
        let colorSpace = CGColorSpaceCreateDeviceRGB()
        let colors: CFArray = [
            UIColor(white: 0.0, alpha: 0.0).CGColor,
            UIColor(white: 0.0, alpha: 0.1).CGColor,
            UIColor(white: 0.0, alpha: 0.2).CGColor,
            UIColor(white: 0.0, alpha: 0.3).CGColor,
            UIColor(white: 0.0, alpha: 0.4).CGColor,
        ]
        let locations: [CGFloat] = [0.36, 0.64, 0.84, 0.96, 1.0]
        let options = CGGradientDrawingOptions()
        if let gradient = CGGradientCreateWithColors(colorSpace, colors, locations) {
            CGContextDrawLinearGradient(context, gradient, CGPointMake(0, 0), CGPointMake(w, 0), options)

    
    private let backOverlayView: UIView = {
        let backOverlayView = UIView(frame: CGRectZero)
        backOverlayView.backgroundColor = UIColor(white: 0.0, alpha: 0.1)
        backOverlayView.alpha = 1.0
        return backOverlayView
        }()
