refactoring Battle