filter now handles nested operations.  todo: all the other operations on a need to use basis