refactor filter base class