Add a simple smartpointer and a testing program