/*==COMPONENT BASED==*/
        public void Update(GameTime gameTime, Sprite_Arena arena, List<Sprite_Table> tableList, Rectangle clientBounds)
        {
            //backup position
            old_position = position;

            //update state
            this.previousGPState = currentGPState;
            this.currentGPState = GamePad.GetState(index);

            if (my_player.Powerup != null)
            {

                if (currentGPState.Buttons.Y == ButtonState.Released && previousGPState.Buttons.Y == ButtonState.Pressed)
                {
                    powerupstart = gameTime.TotalGameTime;
                    my_player.Powerup.Powerup.applyEffect(my_player);
                    my_player.isPowerUpActive = true;
                }

                if (my_player.isPowerUpActive)
                {
                    my_player.Powerup.PositionX = this.position.X + (this.Dimension.X / 2 - my_player.Powerup.Dimension.X / 2);
                    my_player.Powerup.PositionY = this.Position.Y + my_player.Powerup.Dimension.Y;
                    if (gameTime.TotalGameTime.Subtract(powerupstart).Seconds == my_player.Powerup.Powerup.TimeLimit)
                    {
                        my_player.Powerup.Powerup.removeEffect(my_player);
                        my_player.Powerup = null;
                        my_player.isPowerUpActive = false;
                    }
                }
            }

            //Move le sprite
            position += direction;
            updateAnimation(gameTime, clientBounds);

            //ARENA BOUNDS CHECK
            arena.Bounds(this, old_position);

            //TABLE CHECK
            foreach (Sprite_Table t in tableList)
            {
                //check movement
                t.Bounds(this, old_position);

                //add/drop items on appropriate table
                t.ItemManager(this);

            }

            //UPDATE PLAYER CLASS (grabbed items, etc)
            my_player.Update();

            updateScoreOutput(dispTime);

            //base class(frame animation) - we deviate from base class here
            //because we want access to controller logic.  animation implemented in updateAnimation();
            //base.Update(gameTime, clientBounds);
        }
        protected override void LoadContent()
        {
            spriteBatch = new SpriteBatch(Game.GraphicsDevice);
            Vector2 center = new Vector2(Game.Window.ClientBounds.Width / 2, Game.Window.ClientBounds.Height / 2);

            //==LOADASSETS==
            assetManager.LoadTextures();
            assetManager.LoadSounds();
            assetManager.LoadCustomerNames();
            //see AssetManager for definitions - we have a class with static positions
            //perhaps we can change later, kept for conformity sake
            assetManager.LoadCustomerAssets();
            //assetManager.LoadPowerUps();

            //==LOADARENA()==
            arena = new Sprite_Arena(assetManager.GetTextures("arenaTop"), assetManager.GetTextures("arenaBottom"),
                new Vector2(0, 100), new Vector2(0, Game.Window.ClientBounds.Height + 100 - assetManager.GetTextures("arenaBottom").Height));

            //==LOADPLAYERS()==
            LoadPlayers();

            //==LOAD TABLES()==
            LoadTables();

            LoadPowerups();

            //==CUSTOMERS() ==
            //CustomerManager();

            //==INFOPANEL==
            iPanel = new InfoPanel(playerList, assetManager, ((Game2)Game).Time);

            base.LoadContent();
        }