Shared ownership semantics again seems inappropriate here as we're not actually sharing the pointers here, so just use raw pointers instead (with C++11 we could use std::unique_ptr<>, but this is impossible with our own map and scoped pointer implementations). No real changes.