The Headers property creates a new Dictionary which then gets populated. Users typically do something like
if (obj.Headers.ContainsKey("Something"))
{
obj.Headers["Something"] ...
}
which now instantiates a new Dictionary twice, we should optimize this code. consider using a ReadOnlyDictionary