main + smartPointer