add shared_ptr typedef of Agent