         case MaxAgeCacheControlHeader(Int)
         case Redirect(Bool)
         case CustomResponseHeadersSetter(ResponseHeadersSetter)
+        case GenerateETag(Bool)
     }
 
 }

                    redirect = value
                case .CustomResponseHeadersSetter(let value):
                    customResponseHeadersSetter = value
                }
            }
        }

        do {
            let attributes = try fileManager.attributesOfItemAtPath(filePath)
            response.setHeader("Cache-Control", value: "max-age=\(maxAgeCacheControlHeader)")
            if addLastModifiedHeader {
                if let date = attributes[NSFileModificationDate] as? NSDate {
                    response.setHeader("Last-Modified", value: SpiUtils.httpDate(date))
                }
            }
            if generateETag {
                if let date = attributes[NSFileModificationDate] as? NSDate,
                    let size = attributes[NSFileSize] as? Int {
                        let sizeHex = String(size, radix: 16, uppercase: false)
                        let timeHex = String(Int(date.timeIntervalSince1970), radix: 16, uppercase: false)
                        let etag = "W/\"\(sizeHex)-\(timeHex)\""
                        response.setHeader("Etag", value: etag)
                 }
            }
            if let _ = customResponseHeadersSetter {
                customResponseHeadersSetter!.setCustomResponseHeaders(response, filePath: filePath, fileAttributes: attributes)
