                     return
                 }
                 if viewCenter.y <= contentController?.view.frame.size.height {
-                    animateMenuClosingWithCompletion({})
+                    menuClosingWithCompletion(animated: true, completion: nil)
                 } else {
-                    animateMenuOpening()
+                    menuOpening(animated: true)
                 }
             }
         }


    //MARK:Animation and menu operations

    public func animateMenuOpening() {
        if currentState != .Shown {
            showStatusBar()
            if let x = contentController?.view.center.x {
                UIView.animateWithDuration(0.2, animations: {[unowned self]() -> Void in
                    self.contentController?.view.center = CGPointMake(x, UIScreen.mainScreen().bounds.size.height/2 + self.height!)
                }, completion: {[unowned self](finished: Bool) -> Void in
                    UIView.animateWithDuration(0.2, animations: {[unowned self]() -> Void in
                        self.contentController?.view.center = CGPointMake(x, UIScreen.mainScreen().bounds.size.height/2 + self.height! - bounceOffset)
                    }, completion: {(finished: Bool) -> Void in
                        self.currentState = .Shown
                    })
                })
            }
        }
    }
    
    public func animateMenuClosingWithCompletion(completion: completionHandler) {
        dismissStatusBar()
        if let center = contentController?.view.center {
            UIView.animateWithDuration(0.2, animations: {[unowned self]() -> Void in
                self.contentController?.view.center = CGPointMake(center.x, center.y + bounceOffset)
            }, completion: {[unowned self](finished: Bool) -> Void in
                UIView.animateWithDuration(0.2, animations: {[unowned self]() -> Void in
                    self.contentController?.view.center = CGPointMake(center.x, UIScreen.mainScreen().bounds.size.height/2)
                }, completion: {(finished: Bool) -> Void in
                    self.currentState = .Closed
                    completion()
                })
            })
        }
    }

    public func openMenuFromCenterWithVelocity(velocity: CGFloat) {
        showStatusBar()
        let viewCenterY = UIScreen.mainScreen().bounds.size.height/2 + height! - bounceOffset
        currentState = .Displaying
        let duration = Double((viewCenterY - contentController!.view.center.y) / velocity)
        UIView.animateWithDuration(duration, animations: {[unowned self]() -> Void in
            if let center = self.contentController?.view.center {
                self.contentController?.view.center = CGPointMake(center.x, viewCenterY)
            }
        }, completion: {[unowned self](finished: Bool) -> Void in
            self.currentState = .Shown
        })

            menuContentTable?.backgroundColor = newValue
        }
    }

    override public init(frame: CGRect) {
        super.init(frame: frame)
