 
 final public class Hokusai: UIViewController, UIGestureRecognizerDelegate {
     // Views
-    private var menuView = HOKMenuView()
-    private var buttons  = [HOKButton]()
-    
-    private var instance:Hokusai!       = nil
-    private var kButtonWidth:CGFloat    = 250
-    private let kButtonHeight:CGFloat   = 48.0
-    private let kButtonInterval:CGFloat = 16.0
-    private var bgColor                 = UIColor(white: 1.0, alpha: 0.7)
+    private var menuView   = HOKMenuView()
+    private var buttons    = [HOKButton]()
+    private var labels     = [HOKLabel]()
+    
+    private var instance:Hokusai!        = nil
+    private var kButtonWidth:CGFloat     = 250
+    private let kButtonHeight:CGFloat    = 48.0
+    private let kElementInterval:CGFloat = 16.0
+    private var kLabelWidth:CGFloat { return kButtonWidth }
+    private let kLabelHeight:CGFloat     = 30.0
+    private var bgColor                  = UIColor(white: 1.0, alpha: 0.7)
     
     // Variables users can change
     public var colorScheme        = HOKColorScheme.Hokusai

        return btn
    }
    
    // Show the menu
    public func show() {
        if let rv = UIApplication.sharedApplication().keyWindow {

        NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(Hokusai.onOrientationChange(_:)), name: UIDeviceOrientationDidChangeNotification, object: nil)
    }
    
    /// Convenience initializer to allow a single lined title
    convenience public init(headline: String) {
        self.init()
        self.headline = headline
    }
    
    func onOrientationChange(notification: NSNotification) {
        self.updateFrames()
        self.view.layoutIfNeeded()
    }
    
    func updateFrames() {
        kButtonWidth = view.frame.width * 0.8
        
        var yPrevious:CGFloat = 0
        for label in labels {
            label.frame  = CGRect(x: 0.0, y: 0.0, width: kLabelWidth, height: kLabelHeight)
            label.sizeToFit()
            label.center = CGPoint(x: view.center.x, y: label.frame.size.height * 0.5 + yPrevious + kElementInterval)
            yPrevious = CGRectGetMaxY(label.frame)
        }
        
        for btn in buttons {
            btn.frame  = CGRect(x: 0.0, y: 0.0, width: kButtonWidth, height: kButtonHeight)
            btn.center = CGPoint(x: view.center.x, y: kButtonHeight * 0.5 + yPrevious + kElementInterval)
            yPrevious = CGRectGetMaxY(btn.frame)
        }
        
        let labelHeights = labels.flatMap { CGRectGetHeight($0.frame) }.reduce(0, combine: +)
        let buttonHeights = buttons.flatMap { CGRectGetHeight($0.frame) }.reduce(0, combine: +)
        let menuHeight = CGFloat(buttons.count + labels.count + 1) * kElementInterval + labelHeights + buttonHeights
        menuView.frame = CGRect(
            x: 0,
            y: view.frame.height - menuHeight,
