Do you really need a shared pointer here?