add SmartPtr