Add my own shared pointer implementation