added listen functions