Initial commit, mostly functional
filters need some refactoring.