Added strong and weak smart pointers