Moving more code to event emiters and listeners instead of direct dependencies, makes the code a lot simpler