   ///
   /// - Parameter note: To be unselected note in fretboard.
   public func unselect(note: Note) {
-    notes.forEach{ $0.isSelected = $0.note == note && $0.isSelected ? false : $0.isSelected }
+    notes.filter({ $0.note == note }).forEach({ $0.isSelected = false })
     delegate?.fretboad(self, didSelectedNotesChange: notes)
   }
 

  ///
  /// - 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) }
    delegate?.fretboad(self, didSelectedNotesChange: self.notes)
  }


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

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