   ///
   /// - Parameter notes: Notes to be selected.
   public func select(notes: [Note]) {
-    let hasNote: (Note) -> Bool = { note in
-      return notes.contains(where: { $0 == note })
-    }
-
-    self.notes.forEach{ $0.isSelected = hasNote($0.note) }
+    let hasNote: (FretboardNote) -> Bool = { fret in
+      return notes.contains(where: { $0 == fret.note })
+    }
+
+    self.notes.filter(hasNote).forEach({ $0.isSelected = true })
     delegate?.fretboad(self, didSelectedNotesChange: self.notes)
   }
 

  ///
  /// - Parameter note: To be selected note in fretboard.
  public func select(note: Note) {
    notes.forEach{ $0.isSelected = $0.note == note }
    delegate?.fretboad(self, didSelectedNotesChange: notes)
  }


    for fret in fretViews {
      let fretIndex = fret.note.fretIndex
      let stringIndex = fret.note.stringIndex

      // Position
      var position = CGPoint()
      switch fretboard.direction {
