Refactored the function/filter/test interfaces into functional interfaces