drop 'thisPtr' argument from on method because it may be confusing
drop 'capture' and use the third argument in 'on' instead