ENH: add intial smart pointer class and test case