add etag and filter_body
have 100% test coverage