Refactor `Battle` to use prototypes