update: add devicefilter and listener