refactoring filter chain provider