fix work with multiple listeners