Deal damage and destroy, refactor functions and tests.