void Update()
    {
        // dont run Update() if there is no gesture listener
        if (!gestureListener)
            return;

        if (!isMoving)
        {
            if (Input.GetKeyDown(KeyCode.RightArrow))
            {
                MoveUp();
                controller.MoveUp();
            }
            else if (Input.GetKeyDown(KeyCode.LeftArrow))
            {
                MoveDown();
                controller.MoveDown();
            }
            else if (Input.GetKeyDown(KeyCode.UpArrow))
            {
                MoveLeft();
            }
            else if (Input.GetKeyDown(KeyCode.DownArrow))
            {
                MoveRight();
            }
            if (gestureListener)
            {
                if (gestureListener.IsSwipeRight())
                {
                    MoveUp();
                    controller.MoveUp();
                }
                else if (gestureListener.IsSwipeLeft())
                {
                    MoveDown();
                    controller.MoveDown();
                }
                else if (gestureListener.IsSwipeUp())
                {
                    //MoveUp();
                }
            }
        }
        else
        {
            if (stepsToGo > 0)
            {
                if (dir == 1)
                {
                    posx -= 0.1f;
                }
                else if (dir == 2)
                {
                    posx += 0.1f;
                }
                else if (dir == 3)
                {
                    posz += 0.1f;
                }
                else if (dir == 4)
                {
                    posz -= 0.1f;
                }
                stepsToGo--;
            }
            else
            {
                isMoving = false;
                dir = 0;
            }
        }
        obj.gameObject.transform.position = new Vector3(posx, posy, posz);
    }