factorising listening functions