Document and expose eventemitter API. To do this, all usages of `self.on` will need to be replaced with something else.