Use boost::shared_ptr for private implementations