Add first version of smart pointer