examples with smart-pointers using