internal implements change to smart pointer type.