all functions can be changed dynamically during the battle