fix corner case, be more robust
properly handle HTTP header key's case
support HEAD & OPTIONS. one macro to generate them all, crazy