Begin procedure uses smart pointers.