playing around with smart pointers