Explain what this is and why we need to do this.

Hm, can't we use events here?