change 'listener' to 'consumer'