We should definitely remember to address this TODO -- constructing a new header object on every access is so wasteful, since it requires a call to the shared_ptr copy constructor every time.