I think we can try to remove that `self` var. The only place it's really useful is in the callbacks and you can simply use `.bind(this)` on them. This way the functions don't capture anything in their scope, and I think it's better and can save memory, especially because these functions could live for some time.