added smart pointer example