Introduce an interface for list filters and use that in place of the enum.
Refactor some of the code to makethe naming a little less confusing.
Merge remote-tracking branch 'upstream/master'
Merge pull request #30 from ThePumpingLemma/master

Introduce an interface for list filters and use that in place of the enum