switched to a design using filters as function pointer arrays