Refactoring filter into user/item based as separate classes.  Adding support in filter classes for DataSet.  Added test cases.