Refactoring: extract logic from tournament view