   // MARK: Setup 
 
   private func setup() {
-    // Clear FretViews
-    fretViews.flatMap({ $0 }).forEach({ $0.removeFromSuperview() })
+    // Create fret views
+    fretViews.forEach({ $0.removeFromSuperview() })
     fretViews = []
 
-    // Create FretViews
     fretboard.notes.forEach{ fretViews.append(FretView(note: $0)) }
-    fretViews.flatMap({ $0 }).forEach({ addSubview($0) })
+    fretViews.forEach({ addSubview($0) })
+
+    // Create fret numbers
+    fretLabels.forEach({ $0.removeFromSuperview() })
+    fretLabels = []
+    (0..<fretboard.count).forEach({ _ in fretLabels.append(FretLabel(frame: .zero)) })
+    fretLabels.forEach({ addSubview($0) })
+
+    // Create string names
+    stringLabels.forEach({ $0.removeFromSuperview() })
+    stringLabels = []
+    fretboard.tuning.strings.forEach({ _ in stringLabels.append(FretLabel(frame: .zero)) })
+    stringLabels.forEach({ addSubview($0) })
 
     // Set FretboardDelegate
     fretboard.delegate = self

  public var fretboard = Fretboard()

  @IBInspectable public var isDrawNoteName: Bool = true { didSet { redraw() }}
  @IBInspectable public var isDrawFretNumber: Bool = true { didSet { redraw() }}
  @IBInspectable public var isChordModeOn: Bool = false { didSet { redraw() }}
  @IBInspectable public var fretWidth: CGFloat = 5 { didSet { redraw() }}

  }
}

// MARK: - FretLabel

@IBDesignable
public class FretLabel: FRView {
  public var textLayer = CenterTextLayer()

  // MARK: Init

  #if os(iOS) || os(tvOS)
  public override init(frame: CGRect) {
  super.init(frame: frame)
  layer.addSublayer(textLayer)
  }
  #elseif os(OSX)
  public override init(frame frameRect: NSRect) {
    super.init(frame: frameRect)
    wantsLayer = true
    textLayer.alignmentMode = kCAAlignmentCenter
    layer?.addSublayer(textLayer)
  }
  #endif

  public required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
  }

  // MARK: Lifecycle

  #if os(iOS) || os(tvOS)
  public override func layoutSubviews() {
    super.layoutSubviews()
    textLayer.frame = layer.bounds
  }
  #elseif os(OSX)
  public override func layout() {
    super.layout()
    guard let layer = layer else { return }
    textLayer.frame = layer.bounds
  }
  #endif
}

// MARK: - FretView

public enum FretNoteType {
