diff --git a/core/src/cz/nic/tablexia/game/games/pursuit/PursuitGame.java b/core/src/cz/nic/tablexia/game/games/pursuit/PursuitGame.java
index aeec7a1a8046f2edb410a5bdc5d8203767cfcfd1..6e82b230471cf15f5ffb57576b927c9fd6eb1668 100644
--- a/core/src/cz/nic/tablexia/game/games/pursuit/PursuitGame.java
+++ b/core/src/cz/nic/tablexia/game/games/pursuit/PursuitGame.java
@@ -32,6 +32,7 @@ import cz.nic.tablexia.game.GameDefinition;
 import cz.nic.tablexia.game.difficulty.GameDifficulty;
 import cz.nic.tablexia.game.games.pursuit.action.RotateAndMovePieceInPosition;
 import cz.nic.tablexia.game.games.pursuit.action.RotatePieceToClosestAngle;
+import cz.nic.tablexia.game.games.pursuit.action.VehicleMoveAction;
 import cz.nic.tablexia.game.games.pursuit.assets.PursuitAssets;
 import cz.nic.tablexia.game.games.pursuit.helper.ArithmeticsHelper;
 import cz.nic.tablexia.game.games.pursuit.helper.GameRulesHelper;
@@ -50,7 +51,6 @@ import cz.nic.tablexia.util.Log;
 import cz.nic.tablexia.util.Point;
 import cz.nic.tablexia.util.ScaleUtil;
 import cz.nic.tablexia.util.Utility;
-import cz.nic.tablexia.util.actions.MoveAlongAction;
 import cz.nic.tablexia.util.listener.DragAndRotateActorListener;
 import cz.nic.tablexia.util.ui.AnimatedImage;
 import cz.nic.tablexia.util.ui.TablexiaNoBlendingImage;
@@ -405,20 +405,9 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> {
         final Point vehiclePosition = new Point(0, 0);
         Point vehicleSize = new Point(vehicleType.getVehicleSize().x, vehicleType.getVehicleSize().y);
 
-		Music[] vehicleSounds = getVehicleSounds(vehicleType);
+		final Music[] vehicleSounds = getVehicleSounds(vehicleType);
 
         vehicle = new Vehicle(getScreenTextureRegion(vehicleType.getTextureName()), vehiclePosition, vehicleSize);
-//        vehicle.addListener(new VehicleDragListener(vehicle, vehicleSounds, getData(), new Point(roadMap.getWidth(), roadMap.getHeight()), finishFlag, new VehicleDragListener.OnVehicleDragCompleteListener() {
-//            @Override
-//            public void onVehicleDragComplete() {
-//                showGameResultDialog();
-//				remove all actor listeners
-//                vehicle.clear();
-//				vehicle.remove();
-//                finishFlag.clear();
-//                finishFlag.remove();
-//            }
-//        }));
         
         vehicle.addListener(new ClickListener(){
             
@@ -427,7 +416,6 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> {
             @Override
             public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
                 start = new Point(x,y);
-                
                 return super.touchDown(event, x, y, pointer, button);
             }
 
@@ -444,24 +432,18 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> {
                 if (Math.abs(touchAngle - vehicleToFlagAngle) < 20 && distance > 20) {
                     final CatmullRomSpline<Vector2> path = new CatmullRomSpline<Vector2>(Maps.values()[mapNumber].getPursuitPositionDefinition().getPointsWithRotation(grid.getRotation(), vehiclePosition.x,vehiclePosition.y),false);
                     path.approxLength(100);
-                    MoveAlongAction moveAlongAction = new MoveAlongAction(path, 5f){
-
-                        @Override
-                        protected void update(float percent) {
-                            Vector2 value = new Vector2();
-                            
-                            path.valueAt(value, percent);
-                            
-                            actor.setPosition(grid.getWidth()*value.x-actor.getWidth()/2,grid.getHeight()*value.y - grid.getY() - actor.getHeight()/2);
-                            actor.setRotation(path.derivativeAt(value, percent).angle() - 90);
-                            
-                            
-                        }
-                    };
-                    moveAlongAction.setRotate(true);
-                    vehicle.addAction(Actions.sequence(moveAlongAction,new RunnableAction() {
+                    // TODO: 24.6.16 add moving sound 
+                    // FIXME: 24.6.16 touching anything during animation
+                    VehicleMoveAction vehicleMoveAlongAction = new VehicleMoveAction(path, 5f, grid.getWidth(), vehicleSounds);
+                    vehicle.addAction(Actions.sequence(vehicleMoveAlongAction,new RunnableAction() {
                         @Override
                         public void run() {
+
+                            for(Music snd : vehicleSounds) {
+                                snd.stop();
+                                snd.dispose();
+                            }
+                            
                             showGameResultDialog();
                             vehicle.clear();
                             vehicle.remove();
diff --git a/core/src/cz/nic/tablexia/game/games/pursuit/action/VehicleMoveAction.java b/core/src/cz/nic/tablexia/game/games/pursuit/action/VehicleMoveAction.java
new file mode 100644
index 0000000000000000000000000000000000000000..0ca1e5c6d6cc328797273572cf67b92032d3625a
--- /dev/null
+++ b/core/src/cz/nic/tablexia/game/games/pursuit/action/VehicleMoveAction.java
@@ -0,0 +1,57 @@
+package cz.nic.tablexia.game.games.pursuit.action;
+
+import com.badlogic.gdx.audio.Music;
+import com.badlogic.gdx.math.MathUtils;
+import com.badlogic.gdx.math.Path;
+import com.badlogic.gdx.math.Vector2;
+
+import cz.nic.tablexia.util.actions.MoveAlongAction;
+
+/**
+ * Created by Vitaliy Vashchenko on 24.6.16.
+ */
+public class VehicleMoveAction extends MoveAlongAction {
+
+    private float parentSize;
+    private Path<Vector2> path;
+    private float duration;
+    private Music[] vehicleMusic;
+    private int soundIndex;
+    public VehicleMoveAction(Path<Vector2> path, float duration, float parentSize, Music[] vehicleMusic) {
+        super(path, duration);
+        setRotate(true);
+        this.path = path;
+        this.duration = duration;
+        this.parentSize = parentSize;
+        this.vehicleMusic = vehicleMusic;
+        soundIndex = MathUtils.random(0,vehicleMusic.length-1);
+    }
+
+
+    @Override
+    protected void update(float percent) {
+        Vector2 value = new Vector2();
+
+        path.valueAt(value, percent);
+
+        actor.setPosition(parentSize*value.x-actor.getWidth()/2,parentSize*value.y - actor.getHeight()/2);
+        actor.setRotation(path.derivativeAt(value, percent).angle() - 90);
+        
+    }
+
+
+    @Override
+    protected void begin() {
+        vehicleMusic[soundIndex].setVolume(1);
+        vehicleMusic[soundIndex].setLooping(true);
+        vehicleMusic[soundIndex].play();
+        super.begin();
+    }
+
+    @Override
+    protected void end() {
+        vehicleMusic[soundIndex].stop();
+        super.end();
+    }
+
+}