diff --git a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java
index 66449d11bf9896836dc33b33f3b0ff7c543bdd8e..c11823516432d9da826a701934b890e00de503cb 100644
--- a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java
+++ b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java
@@ -3,6 +3,7 @@ package cz.nic.tablexia.screen.gamemenu;
 import com.badlogic.gdx.graphics.g2d.TextureRegion;
 import com.badlogic.gdx.math.Rectangle;
 import com.badlogic.gdx.scenes.scene2d.Touchable;
+import com.badlogic.gdx.scenes.scene2d.actions.Actions;
 import com.badlogic.gdx.scenes.scene2d.ui.Image;
 
 import net.engio.mbassy.listener.Handler;
@@ -15,6 +16,7 @@ import cz.nic.tablexia.bus.ApplicationBus;
 import cz.nic.tablexia.game.GameDefinition;
 import cz.nic.tablexia.model.User;
 import cz.nic.tablexia.screen.AbstractTablexiaScreen;
+import cz.nic.tablexia.screen.gamemenu.actions.ScrollHomeAction;
 import cz.nic.tablexia.screen.gamemenu.event.ShowGameMenuPageEvent;
 import cz.nic.tablexia.screen.gamemenu.pages.GameMenuPage;
 import cz.nic.tablexia.screen.gamemenu.pages.OfficeMenuPage;
@@ -99,13 +101,19 @@ public class GameMenuScreen extends AbstractTablexiaScreen<int[][]> {
             vp.scrollToPage(Integer.valueOf(screenState.get(GameMenuScreen.SCREEN_STATE_PAGE_NUMBER)), false);
         }
 
-
+        // show intro and disable it afterwards
         if (getSelectedUser().isIntro()) {
-            // TODO disable touch
-            // TODO game intro
-            // TODO enable touch
-            getSelectedUser().setIntro(false);
-            User.updateUser(getSelectedUser());
+            vp.setTouchable(Touchable.disabled);
+            vp.scrollToPage(vp.getChildren().size - 1, false);
+            float initScroll = vp.getScrollX();
+            vp.addAction(Actions.sequence(ScrollHomeAction.createInstace(), Actions.run(new Runnable() {
+                @Override
+                public void run() {
+                    vp.setTouchable(Touchable.enabled);
+                    getSelectedUser().setIntro(false);
+                    User.updateUser(getSelectedUser());
+                }
+            })));
         }
     }
 
diff --git a/core/src/cz/nic/tablexia/screen/gamemenu/actions/ScrollHomeAction.java b/core/src/cz/nic/tablexia/screen/gamemenu/actions/ScrollHomeAction.java
new file mode 100644
index 0000000000000000000000000000000000000000..ad514644bdc58359660eebad171b70170b6e122e
--- /dev/null
+++ b/core/src/cz/nic/tablexia/screen/gamemenu/actions/ScrollHomeAction.java
@@ -0,0 +1,36 @@
+package cz.nic.tablexia.screen.gamemenu.actions;
+
+import com.badlogic.gdx.scenes.scene2d.actions.Actions;
+import com.badlogic.gdx.scenes.scene2d.actions.TemporalAction;
+
+import cz.nic.tablexia.util.ui.ViewPager;
+
+/**
+ * Created by lhoracek on 11/4/15.
+ */
+public class ScrollHomeAction extends TemporalAction {
+    private static final float DURATION = 3;
+    private float startX;
+
+    private ViewPager getTargetPager(){
+        return (ViewPager) target;
+    }
+
+    protected void begin() {
+        startX = getTargetPager().getScrollX();
+    }
+
+    protected void update(float percent) {
+        getTargetPager().setScrollX(startX * percent);
+    }
+
+    public void reset() {
+        super.reset();
+    }
+
+    public static ScrollHomeAction createInstace(){
+        ScrollHomeAction action = Actions.action(ScrollHomeAction.class);
+        action.setDuration(DURATION);
+        return action;
+    }
+}
diff --git a/core/src/cz/nic/tablexia/util/ui/ViewPager.java b/core/src/cz/nic/tablexia/util/ui/ViewPager.java
index 2ab1e19387a4825529c82f6ba927a5a24ff2b3a6..c65d43d55adfd58e7824dd52cee4141b2e03e93a 100644
--- a/core/src/cz/nic/tablexia/util/ui/ViewPager.java
+++ b/core/src/cz/nic/tablexia/util/ui/ViewPager.java
@@ -82,7 +82,7 @@ public class ViewPager extends ScrollPane {
     public void act(float delta) {
         if (wasPanDragFling && !isPanning() && !isDragging() && !isFlinging()) {
             wasPanDragFling = false;
-            scrollToPage();
+            smoothScrollToCurrentPage();
         } else {
             if (isPanning() || isDragging() || isFlinging()) {
                 wasPanDragFling = true;
@@ -173,7 +173,7 @@ public class ViewPager extends ScrollPane {
         }
     }
 
-    private void scrollToPage() {
+    private void smoothScrollToCurrentPage() {
         final float width = getWidth();
         final float scrollX = getScrollX();
         final float maxX = getMaxX();