fixed smart pointer