use .delegate instead of .on