Add a shared pointer class

NO BUILD & NO TEST