shared pointer are switchable in spc (boost or std shared_ptr). fully working