If we were to represent the cookies in such a way that corresponded with the way they are treated in the spec, then I think we would represent them as a map of name/path/domain to cookie value + all other attributes when sending them in the response, ie the equivalent of Map[(Name, Path, Domain), (Value, Secure, HttpOnly, Expires)], and when receiving them in the request, represent them as a map of name to a bag of values, a bag because the spec explicitly states that there is no defined ordering, but not a Set because the spec does allow multiple cookies with the same name but different values to come in on a request (eg, two cookies at different paths - but remember that the path isn't transmitted in the request, only the name/value is), ie Map[Name, Bag[Value]].