Use local variables to make methods parse easier.

* Stash local variables, and use them inline (seems to be easier to read to me).
* Do not require function prototype extensions (`Function.prototype.on` was used before).

---

Was just taking a look, and thought I'd suggest these changes, no worries if you don't like. I also edited on GitHub so couldn't run the tests to confirm it all works properly.