issue #15 - implement battle