move response filter into it's own class, and clean up the interface so it can be used separately