         switch menuItemOptions.mode {
         case .Text(let title):
             commonInit({
-                self.setupLabel(title, label: self.titleLabel)
+                self.setupTitleLabel(title)
                 self.layoutLabel()
             })
         case .MultilineText(let title, let description):
             commonInit({
-                self.setupLabel(title, label: self.titleLabel)
-                self.setupLabel(description, label: self.descriptionLabel)
+                self.setupMultilineLabel(title, description: description)
                 self.layoutMultiLineLabel()
             })
         case .Image(let image, _):

        translatesAutoresizingMaskIntoConstraints = false
    }
    
    private func setupDescriptionLabel(title: MenuItemText, description: MenuItemText) {
        setupLabel(title, label: titleLabel)
        setupLabel(description, label: descriptionLabel)
    }
    
    private func setupTitleLabel(title: MenuItemText) {
        setupLabel(title, label: titleLabel)
    }
    
    private func setupLabel(text: MenuItemText, label: UILabel) {
        label.text = text.text
        label.textColor = text.color
        label.font = text.font
        addSubview(label)
    }
    
    private func setupImageView(image: UIImage) {

            
            switch menuItemOptions.mode {
            case .Text(let title):
                updateLabel(titleLabel, text: title)
                
                // adjust label width if needed
                let labelSize = calculateLabelSize(titleLabel)
                widthConstraint.constant = labelSize.width
            case .MultilineText(let title, let description):
                updateLabel(titleLabel, text: title)
                updateLabel(descriptionLabel, text: description)
                
                // adjust label width if needed
                widthConstraint.constant = calculateLabelSize(titleLabel).width
                descriptionWidthConstraint.constant = calculateLabelSize(descriptionLabel).width
