add filter and listener