smart pointer missed + fixed