refactor(*): decouple modules

Decouple modules from one another, in particular the tournament module.
Use events instead of direct references.