fix missing smart pointers
add smartpointer2 and 3