some basic refactoring of AbstractFilter (BaseFilter)