better subscribing with .on()