use new listen api