fun with smart pointers