refactored combat module