I don't like this plain pointer. Can we switch to `shared_ptr` (or `scoped_ptr`, if it's more appropriate)?