diff --git a/src/libs/core/CMakeLists.txt b/src/libs/core/CMakeLists.txt
index 06b5b48503c2e79b9820e75657fe65b50acc838b..72974745b3faf337da8747339a28da4263d7fbd2 100644
--- a/src/libs/core/CMakeLists.txt
+++ b/src/libs/core/CMakeLists.txt
@@ -32,6 +32,7 @@ set(LIB_NOOTKACORE_SRC
   music/tmelody.cpp
   music/tmeter.cpp
   music/tnotestruct.cpp
+  music/tnotedata.cpp
 
   score/tscoreobject.cpp
   score/tstaffobject.cpp
diff --git a/src/libs/core/instruments/tguitarbg.cpp b/src/libs/core/instruments/tguitarbg.cpp
index 4e8e8d910725a1e49b9de13d177ef8d7281bf299..26ad2402749d76312ff3adcf09e37a7885d2ff6b 100644
--- a/src/libs/core/instruments/tguitarbg.cpp
+++ b/src/libs/core/instruments/tguitarbg.cpp
@@ -99,6 +99,25 @@ void TguitarBg::setNote(const Tnote& n) {
 }
 
 
+void TguitarBg::setFingerPos(const TfingerPos& fp) {
+  QPoint p = fretToPos(fp).toPoint();
+  for (int s = 0; s < 6; ++ s) {
+    if (fp.fret() == 0) { // open string
+        m_fingerItems[s]->setVisible(false);
+        m_stringItems[s]->setVisible(fp.str() == s + 1);
+    } else { // some fret
+        if (fp.isValid() && fp.str() == s + 1) {
+            m_fingerItems[s]->setVisible(true);
+            m_fingerItems[s]->setX(p.x());
+            m_fingerItems[s]->setY(p.y() - m_fingerItems[s]->height() * 0.15);
+        } else
+            m_fingerItems[s]->setVisible(false);
+        m_stringItems[s]->setVisible(false);
+    }
+  }
+}
+
+
 qreal TguitarBg::xiiFret() const {
   return static_cast<qreal>(m_fretsPos[11]);
 }
@@ -260,21 +279,7 @@ void TguitarBg::paint(QPainter* painter) {
 void TguitarBg::askQuestion(const Tnote& n, int noteData) {
   p_note = n;
   TfingerPos fp(static_cast<quint8>(noteData));
-  QPoint p = fretToPos(fp).toPoint(); 
-  for (int s = 0; s < 6; ++ s) {
-    if (fp.fret() == 0) { // open string
-        m_fingerItems[s]->setVisible(false);
-        m_stringItems[s]->setVisible(fp.str() == s + 1);
-    } else { // some fret
-        if (fp.str() == s + 1) {
-            m_fingerItems[s]->setVisible(true);
-            m_fingerItems[s]->setX(p.x());
-            m_fingerItems[s]->setY(p.y() - m_fingerItems[s]->height() * 0.15);
-        } else
-            m_fingerItems[s]->setVisible(false);
-        m_stringItems[s]->setVisible(false);
-    }
-  }
+  setFingerPos(fp);
 }
 
 
@@ -364,11 +369,17 @@ void TguitarBg::mousePressEvent(QMouseEvent* event) {
 CHECKTIME (
   if (event->buttons() & Qt::LeftButton) {
     if (m_curStr < 7) {
-      Tnote n(GLOB->Gtune()->strChromatic(m_curStr + 1) + m_curFret);
-      setNote(n);
       m_selectedPos.setPos(m_curStr + 1, m_curFret);
+      Tnote n(GLOB->Gtune()->strChromatic(m_curStr + 1) + m_curFret);
+      if (GLOB->showOtherPos())
+          setNote(n); // selects all possible positions on the fingerboard
+      else { // it selects only just clicked position
+          p_note = n;
+          setFingerPos(m_selectedPos);
+      }
       emit fingerPosChanged();
       emit noteChanged();
+      hoverLeaveEvent(nullptr); // hide highlight that covers selected fret/string
     }
   }
 )
diff --git a/src/libs/core/instruments/tguitarbg.h b/src/libs/core/instruments/tguitarbg.h
index 232a3756a4f77f885abd10d73a0df0fefa2ec1cc..0d837990ea52081996fc8db8bd9c96b913d680e9 100644
--- a/src/libs/core/instruments/tguitarbg.h
+++ b/src/libs/core/instruments/tguitarbg.h
@@ -63,6 +63,8 @@ public:
 
   void setNote(const Tnote& n) override;
 
+  void setFingerPos(const TfingerPos& fp);
+
   void paint(QPainter* painter) override;
 
   void askQuestion(const Tnote& n, int noteData) override;
diff --git a/src/libs/core/tglobals.cpp b/src/libs/core/tglobals.cpp
index af57c66165b285910a9aa8826520ae098cc1b3d4..3218c27ff621292622b79f96c8c2e209c810bfcc 100755
--- a/src/libs/core/tglobals.cpp
+++ b/src/libs/core/tglobals.cpp
@@ -489,7 +489,7 @@ void Tglobals::loadSettings(QSettings* cfg) {
       if (cfg->contains("fingerColor"))
           GfingerColor = cfg->value(QStringLiteral("fingerColor")).value<QColor>();
       else
-          GfingerColor = QColor(255, 0, 127, 200); // nice pink
+          GfingerColor = QColor(255, 0, 127, 150); // nice pink with translucency
       if (cfg->contains("selectedColor"))
           GselectedColor = cfg->value(QStringLiteral("selectedColor")).value<QColor>();
       else