add changes in Iterator and SmartPointer