Decoupling modules using events