add SmartPointer in main