Add outputTo option
Add annotations
Update event method names
Return this