     pitch = pitch_number_for_position(finger_position) % 12
     pitch_fingers[pitch] = finger_position
 
-  colors = ['red', 'blue', 'green', 'orange']
+  degree_colors = ['red', 'blue', 'green', 'orange']
   other_colors = ['rgba(255,0,0 ,.1)', 'rgba(0,0,255, 0.1)', 'rgba(0,255,0, 0.1)', 'rgba(255,0,255, 0.1)']
 
   grid cols: 3, rows: 4

      ctx.stroke()
      ctx.lineWidth = 1

  draw_finger_position = ({string, fret}, options) ->
    {is_root, color} = options || {}
    y = v_gutter + above_fretboard + (fret - 1) * fret_height + fret_height / 2
    ctx.fillStyle = color or (if is_root then 'red' else 'white')
    ctx.strokeStyle = color or (if is_root then 'red' else 'black')

    ctx.fillStyle = 'rgb(128, 128, 128)'
    ctx.fillText "#{chord.name} Chords", diagram_gutter / 2, header_height / 2

    pitches = ((i * 5 + 3) % 12 for i in [0...12])
    for pitch in pitches
      root_fingering = pitch_fingers[pitch]
      chord_name = "#{NoteNames[pitch]}#{chord.abbr}"
      cell ->
        fingering = []
        for semitones, degree_index in chord.pitch_classes
          for {string, fret} in intervals_from(root_fingering, semitones)
            fingering.push {string, fret, degree_index}
        fingering = best_fingering_for(chord, pitch) if best_fingering
        position.color = degree_colors[position.degree_index] for position in fingering
        ctx.font = '20px Impact'
        ctx.font = '5pt Times' if draw_diagrams
        ctx.fillStyle = 'rgb(10,20,30)'
        ctx.fillText chord_name, h_gutter, -3
        draw_fingerboard fingering, barres: best_fingering

chord_book = (options) ->
  page_count = options.pages
