diff --git a/changes b/changes
index 981ef56c1a458aa16aefc675ef4bdd54f71f537f..dba5276c087ce3d9d14e9f2af10989737f942ce9 100644
--- a/changes
+++ b/changes
@@ -1,4 +1,14 @@
-1.2.0 final	  
+1.3.0 beta
+     - added touch interface, adjusted GUI layout to it
+
+1.2.1
+    BUGS FIXES
+     - fixed finger position validation - it might corrupt exam files
+     - properly hide disabled double accidentals buttons in note name menu
+     - fixed position of note name menu when it is moving between staves
+     - fixed compilation issues if missing c++11 flag
+
+1.2.0 final
   Nootka plays melodies
      - updated on-line help
      - unlocked help button(s) to opening related help sites
diff --git a/src/gui/tmainview.cpp b/src/gui/tmainview.cpp
index 3f94832f9c6551a0d2aaa963c0cd1e2c130de2a4..c567286c6a7ae7679b33b08c74e37a73e07daf75 100644
--- a/src/gui/tmainview.cpp
+++ b/src/gui/tmainview.cpp
@@ -339,13 +339,12 @@ bool TmainView::viewportEvent(QEvent *event) {
     if (event->type() == QEvent::TouchBegin || event->type() == QEvent::TouchUpdate || event->type() == QEvent::TouchEnd) {
       QTouchEvent *te = static_cast<QTouchEvent*>(event);
 // 1.  Main widget of view was touched
-      if (itemAt(mapFromScene(te->touchPoints().first().pos())) == m_proxy) {
+      if (itemAt(mapFromScene(te->touchPoints().first().startPos())) == m_proxy) {
 //         if (te->touchPoints().size() == 1) {
 // 1.1 with one finger
           if (m_mainMenuTap || te->touchPoints().first().pos().x() < Tmtr::fingerPixels() / 3) {
 // 1.1.1 on the left screen edge - main menu
               if (event->type() == QEvent::TouchBegin) {
-                event->accept();
                 m_mainMenuTap = true;
               } else if (event->type() == QEvent::TouchEnd) {
                   if (m_mainMenuTap && te->touchPoints().first().pos().x() > width() * 0.15)
@@ -357,7 +356,6 @@ bool TmainView::viewportEvent(QEvent *event) {
 // 1.1.2 on the right screen edge - score menu
           } else if (m_scoreMenuTap || te->touchPoints().first().pos().x() > width() - Tmtr::fingerPixels() / 3) {
               if (event->type() == QEvent::TouchBegin) {
-                event->accept();
                 m_scoreMenuTap = true;
               } else if (event->type() == QEvent::TouchEnd) {
                 if (m_scoreMenuTap && te->touchPoints().first().pos().x() < width() * 0.85)
@@ -367,11 +365,15 @@ bool TmainView::viewportEvent(QEvent *event) {
               }
               return true;
           } else if (m_touchedWidget == m_score->viewport() ||
-                      m_container->childAt(mapFromScene(te->touchPoints().first().pos())) == m_score->viewport()) {
+                      m_container->childAt(mapFromScene(te->touchPoints().first().startPos())) == m_score->viewport()) {
 // 1.1.4 score was touched
               if (guitarView) {
-                delete guitarView;
-                guitarView = 0;
+                if (guitarView->wasTouched())
+                  guitarView->mapTouchEvent(te);
+                else {
+                  delete guitarView;
+                  guitarView = 0;
+                }
               }
 // mapping all touches to score
               QList<QTouchEvent::TouchPoint> pointList;
@@ -384,41 +386,34 @@ bool TmainView::viewportEvent(QEvent *event) {
               }
               QTouchEvent touchToSend(event->type(), te->device(), te->modifiers(), te->touchPointStates(), pointList);
               if (qApp->notify(m_score->viewport(), &touchToSend)) {
-                event->accept();
                 m_touchedWidget = m_score->viewport();
               }
               if (event->type() == QEvent::TouchEnd)
                 m_touchedWidget = 0;
               return true;
 // 1.1.5 guitar was touched
-          } else if (m_touchedWidget == m_guitar->viewport() ||
-                      m_container->childAt(mapFromScene(te->touchPoints().first().pos())) == m_guitar->viewport()) {
-                event->accept();
-                m_touchedWidget = m_guitar->viewport();
-              if (event->type() == QEvent::TouchEnd)
+          } else if (guitarView || m_touchedWidget == m_guitar->viewport() ||
+                      m_container->childAt(mapFromScene(te->touchPoints().first().startPos())) == m_guitar->viewport()) {
+              m_touchedWidget = m_guitar->viewport();
+              if (event->type() == QEvent::TouchEnd) {
                 m_touchedWidget = 0;
-              return true;
-          }
-/*        } else if (te->touchPoints().size() == 2) {
-// 1.2 two fingers touch
-            if (event->type() == QEvent::TouchUpdate) { // TouchBegin occurs when first finger touches size() == 1
-              if (m_touchedWidget == m_guitar->viewport()) {
-// 1.2.2 guitar double touched - bigger preview of fingerboard
-                  if (guitarView) {
-                    guitarView->horizontalScrollBar()->setValue(
-                        guitarView->horizontalScrollBar()->value() + (te->touchPoints()[0].lastPos().x() - te->touchPoints()[0].pos().x()));
-                  } else if (qAbs(te->touchPoints()[0].pos().y() - te->touchPoints()[0].startPos().y()) > height() / 4) {
-                    if (!guitarView) {
-                      guitarView = new TguitarView(m_guitar, this);
-                      guitarView->horizontalScrollBar()->setValue(te->touchPoints().first().pos().x() /
-                        ((guitarView->horizontalScrollBar()->maximum() - guitarView->horizontalScrollBar()->minimum()) / width()));
-                    }
+                if (guitarView) {
+                  if (guitarView->isVisible() && !guitarView->wasTouched()) {
+                      delete guitarView;
+                      guitarView = 0;
                   }
+                } else {
+                   guitarView = new TguitarView(m_guitar, this);
+                   guitarView->displayAt(te->touchPoints().first().pos());
                 }
-            }
-        }*/
+              }
+              if (guitarView)
+                  guitarView->mapTouchEvent(te);
+              return true;
+          }
 // 2. Other temporary item was touched
-      } else if (guitarView && itemAt(te->touchPoints().first().pos().toPoint()) == guitarView->proxy()) {
+      } else if (guitarView && itemAt(te->touchPoints().first().startPos().toPoint()) == guitarView->proxy()) {
+          guitarView->setTouched();
           return guitarView->mapTouchEvent(te);
       }
     }