refactor FIRFilter