filter with a Filter func instead of http.HandlerFunc so that the filter chain can be broken when necessary