             
             switch menuItemOptions.mode {
             case .Text(let title):
-                titleLabel.textColor = selected ? title.selectedColor : title.color
-                titleLabel.font = selected ? title.selectedFont : title.font
+                updateLabel(titleLabel, text: title)
                 
                 // adjust label width if needed
                 let labelSize = calculateLabelSize(titleLabel)
                 widthConstraint.constant = labelSize.width
             case .MultilineText(let title, let description):
-                titleLabel.textColor = selected ? title.selectedColor : title.color
-                titleLabel.font = selected ? title.selectedFont : title.font
-
-                descriptionLabel.textColor = selected ? description.selectedColor : description.color
-                descriptionLabel.font = selected ? description.selectedFont : description.font
-
+                updateLabel(titleLabel, text: title)
+                updateLabel(descriptionLabel, text: description)
+                
                 // adjust label width if needed
                 widthConstraint.constant = calculateLabelSize(titleLabel).width
                 descriptionWidthConstraint.constant = calculateLabelSize(descriptionLabel).width

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

        translatesAutoresizingMaskIntoConstraints = false
    }
    
    private func setupTitleLabel(text: MenuItemText) {
        setupLabel(titleLabel, text: text)
    }
    
    private func setupMultilineLabel(text: MenuItemText, description: MenuItemText) {
        setupLabel(titleLabel, text: text)
        setupLabel(descriptionLabel, text: description)
    }
    
    private func setupLabel(label: UILabel, text: MenuItemText) {
        label.text = text.text
        updateLabel(label, text: text)
        addSubview(label)
    }
    
    private func updateLabel(label: UILabel, text: MenuItemText) {
        label.textColor = selected ? text.selectedColor : text.color
        label.font = selected ? text.selectedFont : text.font
    }
    
    private func setupImageView(image: UIImage) {
