// on updates do animations and controls
        protected override void Update(double deltaTime)
        {
            // if user click 'exit' action, exit game
            if (Input.Down("exit"))
            {
                Game.Exit();
            }

            // is player currently walking + movement speed
            bool   isWalking = false;
            double moveSpeed = deltaTime * 175f;

            // should we flip player direction?
            bool _flipSprite = _player.Size.X < 0;

            // player walks up
            if (Input.Down("up"))
            {
                isWalking           = true;
                _player.Position.Y -= (float)moveSpeed;
            }
            // player walks down
            if (Input.Down("down"))
            {
                isWalking           = true;
                _player.Position.Y += (float)moveSpeed;
            }
            // player walks left
            if (Input.Down("left"))
            {
                isWalking           = true;
                _player.Position.X -= (float)moveSpeed;
                _flipSprite         = true;
            }
            // player walks right
            if (Input.Down("right"))
            {
                isWalking           = true;
                _player.Position.X += (float)moveSpeed;
                _flipSprite         = false;
            }

            // animate player
            _spritesheet.Animate(_player, isWalking ? "walk" : "stand", ref _animationProgress, deltaTime, 5f);

            // flip sprite
            if (_flipSprite)
            {
                _player.Size.X *= -1;
            }
        }