todo hasta smart pointer