removed smart pointer