don't return a raw pointer, either shared_ptr or a normal object.