Please do not pass callbacks by val.